スポンサーリンク

ニューラルネットワークをできるだけわかりやすくまとめてみた

アプリ開発、アルゴリズム

概要

CHATGPTをはじめとした人工知能が驚くぐらいに身近なものになってきたように思います。
情報工学を学んでいた〇十年前でも一応知識としては教わったし実際研究室もあったけど
まだまだ夢物語でした。

其の頃から興味はあったもののテキストを読んでもいまいち理解できなかった「ニューラルネットワーク」
様々な本を読み、自分なりに解釈しエクセルVBAでプログラムを組んでみたりして
自分なりに納得ができたので、まとめていきます。
なお、ニューラルネットワークという単語は知っているものの、いまいち理解できていない
という方を対象としています。

ニューラルネットワークとは?

ニューラルネットワークとは何か?を調べると本でもネットでも下のような説明が見つかります。

「人の脳の神経細胞ニューロンを真似た、AI技術」

これを読んで、「マジで!!人工知能作れるんじゃん!」と興奮したものの、
読み進めていくと難解で何回も挫折しました。
(中年になると親父ギャグ言いたくなるようです。40過ぎて自覚)

ニューラルネットワークの考え方

上のような図を見たことがある人も多いと思います。

  • X1,X2というデータを入力して
  • 何らかの計算をしてYを出す

  • これがいわゆる人工知能の基礎の基礎の形なわけで

  • 「耳が長い」「ニャーとなく」などのデータをXに入れて
  • 「それは猫である」とYに出す
  • というのがよく聞く画像認識の流れになります。

    Yを出すための計算式

    各記号の説明
    X1,X2入力データ
    W1,W2重み
    bバイアス
    Y出力
    t教師データ
    e誤差

    各単語がどういう意味かは効かないでください(汗
    そういう名前がついているという認識でとりあえずいいと思います。

  • Xから入ってきたデータに重みwが合わさりバイアスbが加わったものがYとして出力
  • 式にすると、下のようになります。

    Y=(X1*W1)+(X2*W2)+b
    e = (1/2)*(t-y)^2

    ここで出力されたYの値がtの値に近づくようにWを更新していきます。
    eは最小二乗法を使っています。

    この重み更新で、自分はいつも挫折していました。更新処理については次に回します。

    感想

    大学で初めて習ったときに、ニューラルネットワークという単語がめっちゃカッコいい!!と好きになりました。
    ニューラルネットワークと遺伝的アルゴリズムを理解したい!と思ったものの、全然理解できず卒業
    その後も定期的にブームが来て、勉強しては挫折を繰り返しました。

    どの本を読んでも自分が疑問に思うところが書かれていなかっったことが原因にあります。具体的に言うと、

  • 「ノード」や「中間層」の決定方法
  • 重み更新の式がわからない
  • 文字認識に使われるようだけど、どうやるの?
  • 重みの更新は、誤差が少なくなるまでやるらしいのだけど、一つの値で誤差が減る迄やって次へ行くのか

  • どれを読んでもこのあたりのことがわかりませんでした。
    ノードや中間層は本では初めから決まっているし、重み更新は怒涛の微分積分で頭が煙を吐き出していました。
    文字認識については本では特にデータの説明がなく「例えば”ア”のデータが下記のようなグラフの時」などと説明されており、
    そのデータはどうやってでてきたの??と入力するデータがわからず停止。
    このあたりも何冊も本を読んで自分なりに納得できるものになったのでまとめていきます。

    コメント

    タイトルとURLをコピーしました