talosのプログラミング教室

機械学習とDeep Learningについてのお話

スポンサーリンク

はじめに

こんにちは。talosです。

今回は流行りの機械学習Deep Learningについてお話します。

全然初心者向けじゃないじゃないか!と言われそうですが、そんなことありません。

今や機械学習はIT業界では常識になりつつあります。

簡単に機械学習を使えるフレームワークも出てきています。

だからこそ、理論を知らないでフレームワークを使って機械学習を知った気にならないように、今回はこのトピックを扱います。

機械学習とは

最近は

AI=機械学習

みたいな風潮がありますが、正確にいうと機械学習はAIの一分野です。

名前の通り、人間のように機械が学習します。

例えば、人間は学校で数学の公式を覚えて、それを活かして見たことがないテストの問題を解きます。

これをコンピュータにやらせるわけです。

実は機械学習では、この見たことがない問題を解くことが非常に大切です。

その能力を汎化能力といいます。

それをどのように実現するかというと、大きく分けて3つの方法があります。

機械学習の種類

教師あり学習

訓練データ(教師データ)を基に学習する方法です。

訓練データとは入力と出力の組、わかりやすい例を挙げると問題と答えの組のことです。

Deep Learning教師あり学習の一つです。

教師なし学習

入力のみから学習する方法です。

回帰と分類に分けられます。

教師なし学習にはクラスタリングなどがあります。

強化学習

ある環境下におけるエージェントの行動に対して、与えられた報酬を基に学習する方法です。

例えば、コンピュータにまったく知識がない状態で問題を解かせます。

それが正解なら褒め、不正解なら叱ります。(理不尽ですが)

強化学習にはQ学習などがあります。

Deep Learning

私は正直、Deep Learningがあまり好きではありません。

理由は3つあります。

①プロセスがブラックボックスなのに結果が出ているだけに、否定できない

②メディアなどでも取り上げられ、まるでAI=Deep Learningのように祭り上げられている

③知識がなくてもフレームワークを使えばそれなりのモデルを構築できてしまう

でも、第3次人工知能ブームに火をつけたのは紛れもなくDeep Learningです。

実際結果は出ていますし、Deep Learningを勉強しておいたほうが良いでしょう。

Deep Learningニューラルネットワークの中間層が多層になっているものを言います。

Deep Learningのなにがすごいかというと、データから特徴を自動で抽出してくれることです。

逆に言うとこれが③のような状況を生み出します。

さらっとニューラルネットワークという言葉を出しましたが、これは人間の脳の神経回路網を模したモデルです。

次の章でニューラルネットワークについてもう少し詳しく説明していきます。

ニューラルネットワーク

f:id:talosta:20190525160801p:plain

これが3層のパーセプトロンモデルと言われる、(たぶん)一番よく使われているニューラルネットワークです。

ひとつひとつを見てみると下図のようになっています。

f:id:talosta:20190527202445p:plain

前の層からそれぞれ入力ajがやってきます。

それに重みwjiを掛けすべて足し合わせたものを、活性化関数にかけます。

活性化関数には様々な非線形の関数が使用されます。(例:ReLU関数、シグモイド関数、ソフトマックス関数など)

多層パーセプトロンモデルにおける学習

ここからの話はなるべく一般化して話していきます。

と言いながら、ここでは誤差逆伝播バックプロパゲーション)を扱います。

ニューラルネットワークは入力層から出力層に向けて計算するのですが、この方法では出力層から入力層に向けて誤差を伝播していきます

だから”逆”なんですね。

では、誤差とはと言うと、理想の出力と実際の出力の誤差のことです。

理想の出力は訓練データの出力、実際の出力はニューラルネットワークの出力が当てはまります。

これらの誤差を誤差関数というもので定義します。

誤差関数には二乗誤差、クロスエントロピーなどがあります。

そして、機械学習の目的は理想の出力に実際の出力を近づけることですから、誤差関数を小さくすることを試みます

どうやってやるかと言うと、勾配法を用います。

勾配法は関数を最小化したり、最大化するときに使用するものです。

山を登るとき最も勾配が強い(傾斜が大きい)方向に登り続ければ、山の頂上に着きますよね。

これが勾配法を用いた最大化の考え方です。

最小化は谷を降るイメージです。

勾配法には最急降下法確率的勾配降下法SGD)、Momentum SGD、AdaGrad、Adamなどがあります。

おわりに

今回は、簡単にですが機械学習Deep Learningについて説明しました。

初歩中の初歩しか書いていませんので、本格的に勉強したい方はいろいろな本を読むことをお勧めします。

次回はフレームワークを使いながらコーディングをして、もう少し詳しく説明しようと思います。