見出し画像

【エンジニアの道は果てしない】 AIが学習していること(難しい数式なし)

こんにちは。すうちです。

最近何かと目にするAIのニュース、皆さんはAIと聞いてどういうイメージをお持ちでしょうか。

AI技術を知る前は、私もSFのロボットのような万能な印象もありましたが、いざ勉強したり仕事で関わると思ってたイメージと違う部分もあるなと感じてます。

今回はAIの学習について、概念が伝わるような話を書きたいと思います。

最初に結論。AIの学習とは

Y=aX+b Y:出力 X:入力
におけるa, bをいい感じに調整することです。

はじめに

今回説明では、中学生の頃習った一次関数を使います。

一次関数は、y=ax+bの形でx/y軸に対しaは傾き、bは切片(X=0の値)です。a, bが固定の時、xを代入するとyの値が決まります。

例:a=2 b=1 x=4の時 Y=2*4+1=9

図1.一次関数 y=2x+1

以下、動物の身長体重(特徴分布)を用いた分類の例です。

データは、動物図鑑/動物の大きさの比較を参考にしました。

2つの分布

データが少ない場合

以下、データの分布があるとします。
図2はハイエナ(緑)とクマ(茶)の身長体重のサンプルです。

この時、ハイエナとクマを区別する境界線を引くとしたら、どのような線を引くでしょうか。

図2.ハイエナとクマの身長体重分布(サンプル数3)

例えば、図3の線1、2のような線が引けると思います。

図3.ハイエナとクマの身長体重分布(サンプル数3)と境界線

この場合、線1でも2でもどちらでも良くみえます。また、境界線は他にも色んなパターンが引けそうです。

このとき線1,2のa, bは以下でした。

線1:y=-14x+1400(a=-14、b=1400)
線2:y=2.8x-140(a=2.8、b=-140)

データが増えると

前述の分布は、ハイエナとクマの身長体重のサンプル数3でした。もっと身体が大きいもの・小さいものもいるかもしれません。

図3はサンプル数30の分布です。

図4.ハイエナとクマの身長体重分布(サンプル数30)と境界線

サンプル数3の時に引いた線1と2はどちらもダメそうです(両線とも一部のクマはハイエナと判定され最適でない)

仮に図4の分布がハイエナとクマの身長体重分布を網羅する場合、理想的な境界線は線3と言えそうです。

このとき線3のa, bは以下でした。

線3:y=1.75x(a=1.75、b=0)

なぜ多くのデータが必要なのか?

データ数が少ないと境界線a, bの値が複数あったり、少ない数では良かった条件がデータが増えると適切でないことがあります。

AIは事前の学習結果からデータを判定しますが、数が少ないと学習したa, bが最適化されず判定精度に影響します。これがAIが多くのデータを必要とする理由です(補足:少ないデータでも学習効率や判定精度を上げる研究や手法もありますが、データの数と質は重要です)。

先ほどの一次関数a, bの話に戻ると、最初の境界線(a, b)は(-14, 1400),(2.8, -140)でしたが、図4の結果から適正値(a, b)は(1.75, 0)でした。

このようにAIが学習しているのは、入力データの特徴からa, bを最適値に調整することです。

複数の分布(分類が増えた場合)

仮に判定対象の動物を増やしたい場合はどうでしょうか(図5)。

これも基本的な流れは同じで、各境界線(図6. A,B,C,D)で必要な複数のa, bを調整していくことになります。

図5.複数の動物の身長体重分布(サンプル数30)
図6.複数の動物の身長体重分布(サンプル数30)と境界線

AIが値を調整できる仕組み

コンピュータ(AI)は、基本的に0/1の数値しか理解できません。ではどうやって入力データからクマやライオンを判断できるのでしょうか。

前提条件

少し前提を補足します。y=ax+bは、AIの教科書ではY=WX+bの表記(Y:出力, X:入力, W:重み, b:バイアス)ですが、基本的な考えは同じです。入力Xは通常2次元や3次元の行列を示します。

また今回説明を省きますが、AIのネットワークは通常複数層で出力Yを活性化関数(次層の入力選別)fを通してY1=f(Y0=WX+b)…Yn=f(Yn-1)から最終結果を得ます。

例:動物5種類の分類

例えば、判定したい動物が5種類の場合、最終出力をクマ:0、ライオン:1、シマウマ:5などルールを決めます。

入力がライオンの場合出力1が正解。それ以外は不正解なので重みWを修正します。この流れが図7です。

図7. ネットワーク構造と重み修正の例

このWの更新はバックプロパゲーションと呼ばれ、出力誤差と偏微分や誤差関数を利用し、さかのぼって各層のWを更新する方法です。

学習が進むとWが最適化され入力の期待値と一致するようになります(更に詳しく知りたい方は、こちらの記事(Microsoft)も参照)。

最後に

今回は2次元分布(身長、体重)をy=ax+bで分類する例でしたが、この条件であれば通常は数値計算や条件判定になると思います。

AIを使う場合、単純な計算では判定難しいもっと複雑なデータだったり、調整する値も数千単位が一般的です。

人によってAIに持つ印象は様々と思いますが、何か参考になれば幸いです。

最後まで読んで頂き、ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?