機械学習とは?
機械学習とは、データから規則や傾向を学び、新しい入力に対して予測や分類を行う技術です。 本アプリでは、身近な例を使いながら、入力から出力までの流れを理解できるようにしています。
文字認識のように、入力データから結果を推定する仕組みをテーマに、 実際の画面を見ながら学べる構成です。機械学習はすでに自動運転や医療画像の解析など、 さまざまな分野で活用されています。
教師あり学習と 3 層ニューラルネットワークの基本を中心に、 パーセプトロンや誤差逆伝播法の考え方を画面イメージとともに紹介します。
機械学習とは、データから規則や傾向を学び、新しい入力に対して予測や分類を行う技術です。 本アプリでは、身近な例を使いながら、入力から出力までの流れを理解できるようにしています。
文字認識のように、入力データから結果を推定する仕組みをテーマに、 実際の画面を見ながら学べる構成です。機械学習はすでに自動運転や医療画像の解析など、 さまざまな分野で活用されています。
本アプリでは教師あり学習を中心に扱います。画像データを数値化し、 その入力に対して正解となる教師データを用意して学習させます。
たとえば文字画像なら、入力データに対して「これは A」などの答えを与えます。 このような正解付きデータを繰り返し用意することで、学習に時間はかかりますが、 入力に対する出力の精度を高めていけます。
学習できたといえるのは、教師データに合うだけでなく、未知の入力に対しても 妥当な出力を返せるネットワークになったときです。文字認識なら、入力データは 各画素の濃さの集合となり、出力データは各文字である確率になります。
たとえば「A である可能性 92%、B である可能性 1%」のように、 複数候補の確率として表現されます。このようなネットワークを ニューラルネットワークと呼びます。
ニューラルネットワークは複数のパーセプトロンから構成されます。 パーセプトロンは複数の入力値に矢印の重みを掛け算し、足し算を行い、 さらにバイアスを加える基本単位です。
この値をそのまま使うのではなく、活性化関数であるシグモイド関数を通すことで、 0 から 1 の範囲の出力に変換します。
答えを適切に出力するためには、矢印に適切な値を更新する必要があります。 学習開始時点ではランダムな値から始め、教師データと出力結果の差を見ながら、 繰り返し値を調整していきます。
本アプリでは、学習条件をまとめたケースを追加しながら、入力層・隠れ層・出力層の 設定も行えます。そのため、学習の準備段階から全体の流れを把握できます。
学習を進めるには、教師データから出力との差を確認し、その誤差をもとに どの矢印の値をどれだけ修正するかを決める必要があります。 誤差逆伝播法はこの調整を効率よく行う方法です。
出力層で生じた誤差を手掛かりに、中間層、入力層へと順番に影響をたどり、 それぞれの重みを少しずつ更新します。こうして学習を繰り返すことで、 出力は徐々に教師データへ近づいていきます。
このアプリでは、隠れ層が 1 つの 3 層ニューラルネットワークを主に扱っています。 さらに多くの層を重ねると、より複雑な特徴を段階的に学習できるようになり、 画像認識や音声認識などでも活用されるディープラーニングへつながります。
層が深くなるほど計算量や過学習などの課題も増えますが、 活性化関数や Dropout、バッチ正規化などの技術によって実用性が高まっています。