機械学習とDeep Learningについてのお話
スポンサーリンク
はじめに
こんにちは。talosです。
今回は流行りの機械学習とDeep Learningについてお話します。
全然初心者向けじゃないじゃないか!と言われそうですが、そんなことありません。
今や機械学習はIT業界では常識になりつつあります。
機械学習とは
最近は
AI=機械学習
みたいな風潮がありますが、正確にいうと機械学習はAIの一分野です。
名前の通り、人間のように機械が学習します。
例えば、人間は学校で数学の公式を覚えて、それを活かして見たことがないテストの問題を解きます。
これをコンピュータにやらせるわけです。
実は機械学習では、この見たことがない問題を解くことが非常に大切です。
その能力を汎化能力といいます。
それをどのように実現するかというと、大きく分けて3つの方法があります。
機械学習の種類
Deep Learning
私は正直、Deep Learningがあまり好きではありません。
理由は3つあります。
①プロセスがブラックボックスなのに結果が出ているだけに、否定できない
②メディアなどでも取り上げられ、まるでAI=Deep Learningのように祭り上げられている
③知識がなくてもフレームワークを使えばそれなりのモデルを構築できてしまう
でも、第3次人工知能ブームに火をつけたのは紛れもなくDeep Learningです。
実際結果は出ていますし、Deep Learningを勉強しておいたほうが良いでしょう。
Deep Learningはニューラルネットワークの中間層が多層になっているものを言います。
Deep Learningのなにがすごいかというと、データから特徴を自動で抽出してくれることです。
逆に言うとこれが③のような状況を生み出します。
さらっとニューラルネットワークという言葉を出しましたが、これは人間の脳の神経回路網を模したモデルです。
次の章でニューラルネットワークについてもう少し詳しく説明していきます。
ニューラルネットワーク
これが3層のパーセプトロンモデルと言われる、(たぶん)一番よく使われているニューラルネットワークです。
ひとつひとつを見てみると下図のようになっています。
前の層からそれぞれ入力ajがやってきます。
それに重みwjiを掛けすべて足し合わせたものを、活性化関数にかけます。
多層パーセプトロンモデルにおける学習
ここからの話はなるべく一般化して話していきます。
と言いながら、ここでは誤差逆伝播法(バックプロパゲーション)を扱います。
ニューラルネットワークは入力層から出力層に向けて計算するのですが、この方法では出力層から入力層に向けて誤差を伝播していきます。
だから”逆”なんですね。
では、誤差とはと言うと、理想の出力と実際の出力の誤差のことです。
理想の出力は訓練データの出力、実際の出力はニューラルネットワークの出力が当てはまります。
これらの誤差を誤差関数というもので定義します。
誤差関数には二乗誤差、クロスエントロピーなどがあります。
そして、機械学習の目的は理想の出力に実際の出力を近づけることですから、誤差関数を小さくすることを試みます。
どうやってやるかと言うと、勾配法を用います。
勾配法は関数を最小化したり、最大化するときに使用するものです。
山を登るとき最も勾配が強い(傾斜が大きい)方向に登り続ければ、山の頂上に着きますよね。
これが勾配法を用いた最大化の考え方です。
最小化は谷を降るイメージです。
おわりに
今回は、簡単にですが機械学習とDeep Learningについて説明しました。
初歩中の初歩しか書いていませんので、本格的に勉強したい方はいろいろな本を読むことをお勧めします。
次回はフレームワークを使いながらコーディングをして、もう少し詳しく説明しようと思います。