ここで考えることが一つあります。それは機械学習やニューラルネットワークを行う際には、非常に多くの変数を取り扱うことになりがちなことです。例えば、先ほどの例では、入力層の1つのノードから隠れ層のノードへの出力を決める際に5つ(次の層のノード数)の重みと1つのバイアス(と活性化関数)を使用していました(以下に図を再掲します)。
入力層には4つのノードがあるので、入力層から隠れ層へ伝えられる値を計算するだけでも、重みが20個とバイアスが5個必要だということです。ちなみに、隠れ層から出力層への出力には重みが5個、バイアスが1個必要になります。つまり、このシンプルなニューラルネットワークですら、合計で30個を超えるパラメーターを取り扱う必要があります。
つまり、ニューラルネットワークを作成する際には、入力されるデータ、ノードが持つ重みとバイアス、それらを基にした計算処理、そうしたことを簡便にプログラムコードとして表現できる必要があります。少しだけ詳しく説明すれば、複数のデータを一括して扱える多次元配列とそれを扱う演算があると便利です。入力や重み、バイアスなどを配列にまとめて格納し、それらを(実際には多数の変数が含まれているとしても)単一の変数のように扱えるのが理想的です。
今述べたようなことが可能ならば、上の図は次のように簡便に記述できるかもしれません(これは仮想的な書き方で、実際にこう書けるとは限らないことに注意してください)。
そして、まさにそうしたライブラリがあったことから、Pythonはこの分野においてよく使われるようになりました。特に有名なのは、NumPyです。これは多次元配列とその演算を高速に処理できるライブラリであり、NumPyをベースとしたライブラリやフレームワークが現在では多数存在しています。また、コードとそれに付随するドキュメントを効果的に記述できるソフトウェアが登場して、反復的なコード記述と実行を効率的に行えるようになったことも、こうした分野におけるPythonの爆発的な広まりを後押ししたといえます。
このようなライブラリやアプリとしては、例えば次のようなものが挙げられます。
これら以外にも、機械学習やディープラーニングに利用できるさまざまなライブラリやフレームワークがPythonにはあります。機械学習に関わる多くの人がPythonに集まったことから、そのために使えるさまざまなソフトウェアが作り出され、さらに人を呼び寄せることになり、機械学習のエコシステム(生態系)ができあがったといえます。もちろん、他のプログラミング言語を使っても機械学習を学んだり、それを実地に活用したりは可能ですが、「これからやってみよう」というスタート地点としては、多くの人が活発に活動をしているPythonはよい選択肢といえます。
本連載では、Pythonをプログラミング言語として、機械学習フレームワークとしては主にPyTorchを使います。また、各回で作成したプログラムはGoogleがホストしているJupyter Notebook環境であるGoogle Colaboratory(以下、Google Colab)に掲載する予定です。
なお、本連載ではGoogle Colabの使い方を詳細に説明することはしません。基本的な使い方については「Google Colaboratory入門」の「Google Colaboratory(Jupyter Notebook)の準備と、ノートブックの作成」を参考にしてください。Google Colabを使うにはGoogleアカウントが必須なことには注意が必要です。
また、Pythonコードの構文についても詳しくは説明しません。ざっくりとした説明はしますが、具体的な構文で分からないところがあるときには、「Python入門」の該当する回を参考にしてください。
以下では、Google Colabでノートブックの新規作成とコードの入力/実行までを簡単に見ておきましょう。
まずはGoogle Colabのページを開き、Googleアカウントでログインしていなければログインしてください。
初めてログインをすると、上の画面でログイン済みになっているページが表示されます。
ここで[ファイル]メニューにある[ノートブックを新規作成]を選択すると、新しい「ノートブック」が作成されます。
あるいは、Google Colabで既にノートブックを作ったことがあるのであれば、「Google Colab」などを検索語として検索して、表示されたリンクをクリックすると、次のようにどのノートブックを使用するかを問い合わせるダイアログが表示されるかもしれません。このときには、使用するノートブックをクリックするか、下にある[ノートブックを新規作成]をクリックしてください。
ノートブックには、Pythonのプログラムコードと、それに関連するドキュメントやメモを書き入れられるようになっています(コードを書く「セル」と、ドキュメントを書く「セル」があります)。ノートブックを新規作成すると、最初にコードを入力するセルが1つだけ表示されます。
書いたコードを実行するには、セルの左端にある[セルを実行]ボタンをクリックします。試しにここでは以下のコードを入力してみましょう。
import sys
print(sys.version)
セルに上記のコードを入力して、[セルを実行]ボタンをクリックすると、次のようにその実行結果が表示されます。[Ctrl]+[Enter]キーを押すと、それまで入力をしていたセルのコードが実行されるので、キーボード派の方はそちらの方法を選択するのもありでしょう。
このことから、Google Colabで実行されているPythonのバージョンは3.6.9であることが分かりました。コードを入力するセルを追加するには、上にある[+ コード]ボタンをクリックするか、セルの下端の真ん中当たりでマウスをホバーさせるとポップアップ表示される[+ コード]ボタンをクリックするかします(キーボードショートカットもあるので、キーボード派の方はそちらを使うのが簡単です)。
コードを入力しては実行し、次のコードを入力しては実行し、……、と対話的にプログラムを実行しながら(つまり、個々のステップの動作を確認しながら)、一つのドキュメントとしてプログラムを構築していけるのが、Google ColabやJupyter Notebook/JupyterLabのよいところです。エラーが出たら、そのコードをその場で修正して、再実行といったことも簡単に行えます。
Google Colabで新規にノートブックを作成して、セルにコードを入力し、それを実行して、次のセルを追加するところまでが分かれば、取りあえずは十分です。Google Colabの便利な使い方については、必要に応じて、今後の回で取り上げる予定です。
少々長くなったので、今回はここまでとしましょう。次回は、あやめの特徴を記したデータを入力すると、その種類を推測するニューラルネットワークを実際に作成しながら、ニューラルネットワークやディープラーニングによく出てくる用語や概念について見ていきます。
Copyright© Digital Advantage Corp. All Rights Reserved.