PerlとSPVMで学ぶディープラーニング入門 - 国産AI 日本の期待の星プロジェクト

PerlとSPVMで学ぶディープラーニング入門 - 国産AI 日本の期待の星プロジェクト

PerlとSPVMで学ぶディープラーニング入門です。SPVMは、Perlの処理を高速化できるモジュールです。ディープラーニングでは、計算資源を最適化することが求められますが、Perlは、数値計算能力は、ディープラーニングの必要を満たさないので、SPVMというモジュールを使います。

PerlとSPVMで学ぶディープラーニング入門は、Perlゼミのプログラミングスクールの講座のひとつです。PerlでAIの一つの分野であるディープラーニングの基礎を学び、実用的に使えることを目標に作られています。

「国産AI 日本の期待の星プロジェクト」と名づけられました。

ディープラーニングとは何か?

ディープラーニングは、機械学習の一つの分野です。

機械学習では、入力から正しい出力を得られるように、パラメーターを自動的に調整します。パラメーターを自動的に調整する仕組みを、プログラムとして実装するので、機械的に学習が進むのです。

たとえば、入力が「人物の写真」だとして、この人は「眼鏡をかけている」「眼鏡をかけていない」というのが出力です。パターン認識と呼ばれる基本的な分野です。

眼鏡をかけているかどうかの正答率を上昇させていくことが、機械学習の目標です。

ディープラーニングは、機械学習の中でも、人間の神経伝達の仕組みを模倣した、ニューラルネットワークを利用した機械学習です。

ディープラーニングは、ニューラルネットワークの中で、深層学習と呼ばれ、複数の入力と複数の出力を、多段階に連続的につなぎ、最終的な出力を得る方法です。

人物の写真
↓
(x0, x1, x2, x3)
↓
(y0, y1, y2, y3, y4)
↓
(z0, z1, z2)
↓
(眼鏡をかけている、眼鏡をかけていない)

実際は、x1~xnまでは、もっと長いです。y1~ykまでももっと長いです。xの個数とyの個数は異なっても構いませんし、一般的には、異なるようにします。

また、段数は、この例では、x, y, zですが、これも、もっと長くなります。

入力から、複数入力と複数出力を多段につなげていって、出力を得るというところがポイントです。

googleが作ったような、100億個のニューロンに該当するものを作るとすれば、各層は1億個程度、層の数は100層くらいになります。ひえー。

数学の言葉をできるだけ使わないで解説

Perlで学ぶディープラーニング入門では、数学の言葉をできるだけ使わないで解説します。

まずプログラミングのサンプルで、入力と出力を提示します。そのあとで、補助的に高校生の数学で理解できる範囲で説明します。

「えっ、そんなことができるの?」

でも、よく考えてください。

「中身、全部ソースコードじゃないですか!!!」。

「数学はわからなくっても、コードは読めるはず!!!」

やってみてからのお楽しみ。

ライブラリ使ったらいいんじゃないの?

僕は、ディープラーニングを実現するための本質は、大量のデータ量をWebから取得することと、電気代を減らせることにかかっていると考えています。

そもそも、この2本がなければ、ディープラーニングは、底に穴が開いているようなものです。

特定のアプリケーション用にディープラーニングを最適化するために、ディープラーニングの仕組みそのものを理解して、プログラミングが書ける必要があると考えています。

汎用的なライブラリは、計算資源の利用効率を最適化してくれないのです。

電気代を、クラウドコンピューター事業者に吸い込まれて「はい。おしまい。」それじゃ、悲しいですよね。

ディープラーニング入門

Side Bar