機械学習やディープラーニングってどんなもの?作って試そう! ディープラーニング工作室(2/2 ページ)

» 2020年03月24日 05時00分 公開
[かわさきしんじDeep Insider編集部]
前のページへ 1|2       

機械学習とPython

 ここで考えることが一つあります。それは機械学習やニューラルネットワークを行う際には、非常に多くの変数を取り扱うことになりがちなことです。例えば、先ほどの例では、入力層の1つのノードから隠れ層のノードへの出力を決める際に5つ(次の層のノード数)の重みと1つのバイアス(と活性化関数)を使用していました(以下に図を再掲します)。

入力層の1つのノードから隠れ層に渡す値を計算するには5つの重みと1つのバイアスが必要 入力層の1つのノードから隠れ層に渡す値を計算するには5つの重みと1つのバイアスが必要

 入力層には4つのノードがあるので、入力層から隠れ層へ伝えられる値を計算するだけでも、重みが20個とバイアスが5個必要だということです。ちなみに、隠れ層から出力層への出力には重みが5個、バイアスが1個必要になります。つまり、このシンプルなニューラルネットワークですら、合計で30個を超えるパラメーターを取り扱う必要があります。

 つまり、ニューラルネットワークを作成する際には、入力されるデータ、ノードが持つ重みとバイアス、それらを基にした計算処理、そうしたことを簡便にプログラムコードとして表現できる必要があります。少しだけ詳しく説明すれば、複数のデータを一括して扱える多次元配列とそれを扱う演算があると便利です。入力や重み、バイアスなどを配列にまとめて格納し、それらを(実際には多数の変数が含まれているとしても)単一の変数のように扱えるのが理想的です。

 今述べたようなことが可能ならば、上の図は次のように簡便に記述できるかもしれません(これは仮想的な書き方で、実際にこう書けるとは限らないことに注意してください)。

多次元配列に入力、重み、バイアスをまとめることで簡便な記述が可能 多次元配列に入力、重み、バイアスをまとめることで簡便な記述が可能

 そして、まさにそうしたライブラリがあったことから、Pythonはこの分野においてよく使われるようになりました。特に有名なのは、NumPyです。これは多次元配列とその演算を高速に処理できるライブラリであり、NumPyをベースとしたライブラリやフレームワークが現在では多数存在しています。また、コードとそれに付随するドキュメントを効果的に記述できるソフトウェアが登場して、反復的なコード記述と実行を効率的に行えるようになったことも、こうした分野におけるPythonの爆発的な広まりを後押ししたといえます。

 このようなライブラリやアプリとしては、例えば次のようなものが挙げられます。

  • NumPy:科学計算パッケージ。多次元配列を直観的かつ高速に操作可能
  • SciPy:NumPyをベースとした広範な科学計算を行うためのPythonモジュール
  • pandas:データ解析/操作を行うためのライブラリ
  • matplotlib:印刷品質のグラフや図を描画するためのライブラリ
  • scikit-learn:Python用の機械学習ライブラリ
  • Tensorflow:Googleが開発した機械学習プラットフォーム
  • PyTorch:Facebookが開発した機械学習フレームワーク
  • Jupyter Notebook/JupyterLab:実行可能なコードを含んだドキュメントを作成可能なWebアプリケーション

 これら以外にも、機械学習やディープラーニングに利用できるさまざまなライブラリやフレームワークが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 Colabのページを開き、Googleアカウントでログインしていなければログインしてください。

Google Colabへのログイン Google Colabへのログイン

 初めてログインをすると、上の画面でログイン済みになっているページが表示されます。

Google Colabにログインをした後の画面 Google Colabにログインをした後の画面

 ここで[ファイル]メニューにある[ノートブックを新規作成]を選択すると、新しい「ノートブック」が作成されます。

ノートブックの新規作成 ノートブックの新規作成

 あるいは、Google Colabで既にノートブックを作ったことがあるのであれば、「Google Colab」などを検索語として検索して、表示されたリンクをクリックすると、次のようにどのノートブックを使用するかを問い合わせるダイアログが表示されるかもしれません。このときには、使用するノートブックをクリックするか、下にある[ノートブックを新規作成]をクリックしてください。

ノートブックの選択画面 ノートブックの選択画面

 ノートブックには、Pythonのプログラムコードと、それに関連するドキュメントやメモを書き入れられるようになっています(コードを書く「セル」と、ドキュメントを書く「セル」があります)。ノートブックを新規作成すると、最初にコードを入力するセルが1つだけ表示されます。

作成されたノートブック 作成されたノートブック

 書いたコードを実行するには、セルの左端にある[セルを実行]ボタンをクリックします。試しにここでは以下のコードを入力してみましょう。

import sys
print(sys.version)

Google Colabで実行されているPythonのバージョンを調べる

 セルに上記のコードを入力して、[セルを実行]ボタンをクリックすると、次のようにその実行結果が表示されます。[Ctrl]+[Enter]キーを押すと、それまで入力をしていたセルのコードが実行されるので、キーボード派の方はそちらの方法を選択するのもありでしょう。

セルにコードを入力
セルにコードを入力
[セルを実行]ボタンをクリック
[セルを実行]ボタンをクリック
実行結果が表示される
実行結果が表示される

実行結果


 このことから、Google Colabで実行されているPythonのバージョンは3.6.9であることが分かりました。コードを入力するセルを追加するには、上にある[+ コード]ボタンをクリックするか、セルの下端の真ん中当たりでマウスをホバーさせるとポップアップ表示される[+ コード]ボタンをクリックするかします(キーボードショートカットもあるので、キーボード派の方はそちらを使うのが簡単です)。

セルの新規作成 セルの新規作成

 コードを入力しては実行し、次のコードを入力しては実行し、……、と対話的にプログラムを実行しながら(つまり、個々のステップの動作を確認しながら)、一つのドキュメントとしてプログラムを構築していけるのが、Google ColabやJupyter Notebook/JupyterLabのよいところです。エラーが出たら、そのコードをその場で修正して、再実行といったことも簡単に行えます。

 Google Colabで新規にノートブックを作成して、セルにコードを入力し、それを実行して、次のセルを追加するところまでが分かれば、取りあえずは十分です。Google Colabの便利な使い方については、必要に応じて、今後の回で取り上げる予定です。


 少々長くなったので、今回はここまでとしましょう。次回は、あやめの特徴を記したデータを入力すると、その種類を推測するニューラルネットワークを実際に作成しながら、ニューラルネットワークやディープラーニングによく出てくる用語や概念について見ていきます。

「作って試そう! ディープラーニング工作室」のインデックス

作って試そう! ディープラーニング工作室

前のページへ 1|2       

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。