雑なAI(ニューラルネットワーク)の解説

AI

AIって何やってんの?というのを、ちょー雑に解説しようと思います。

はじめに

昨今のAIの根幹にあると言っても過言ではない、ニューラルネットワークについて理解すれば、AIが何をしているのかが理解できると思います。

ニューラルネットワークは、人の脳の中を模倣した機械学習モデルの一つで、

  • 深層ニューラルネットワーク:深い層のニューラルネットワーク。下記の畳み込みなども深層であればこれに含まれる。
  • 畳み込みニューラルネットワーク:画像などが得意
  • 再帰型ニューラルネットワーク:テキスト、時系列データなどが得意
  • トランスフォーマー:Chat GPTやGeminiといった大規模言語モデル(LLM)のベースのAIモデル。Feed Forward層の部分がニューラルネットワークになっている。
  • 深層強化学習モデル:強化学習に深層ニューラルネットワークを組み合わせた手法

のように多くのAIモデルの根幹にあります。

なので、ニューラルネットワークを知れば、AIモデルについてある程度理解できます。

この記事では、一般的なAIモデルの推論と学習ニューラルネットワークの観点から説明します。

推論

学習したAIモデルで、未知データの予測をすることを推論と言います。

この推論をどうやってAIモデルが行っているのでしょうか?

AIモデルによって、入力データx に対して、予測結果のyが出力されるパターンを考えてみます。

これは、xからyを計算する関数fを用いて以下のように書けます。

y = f(x)

ここで実社会の複雑なデータ(x)を使って何かを予測することを考えると、この関数fはすごく複雑な計算となることが想像できると思います。

例えば、患者の血液のデータ(x)から病気であるか(y)を判定したり、ビジネスマンの性格・職歴などの個人情報(x)からその人の年収(y)を予測したりすることを考えてください。

データxからyを予測することが出来そうだけど、その間の計算はすごく複雑でブラックボックスな感じがすると思います。

ここで、ニューラルネットワークの出番です。

なんと、ニューラルネットワークに十分な表現力があれば、この複雑な関数fを近似して表現できるのです。

つまり、データを十分な表現力のあるニューラルネットワークにぶち込んで学習すれば、良い感じに関数fを近似して、未知の入力データxからyを予測、すなわち、推論できるようになります。

参考:

学習

さて、AIモデルがこの近似をどう行っているかというと、訓練データを用いて、入力データxからyを精度よく予測できるように、計算に使うパラメータを更新していく方法を使っています。

これは、どういうことかというと、

まず初め計算に使うパラメータは適当なものを与え、そのパラメータを用いて訓練に使う入力データxから出力yを計算します。パラメータは適当なので、出力yはデタラメになることがわかると思います。

次に、デタラメなyと実際の訓練データのyの誤差を計算します。誤差は初め大きいことが想像できると思います。

その後、この誤差が小さくなる方向にパラメータを調整します。自分的にここが学習のキモだと思っていますが、詳しくは複雑になるので説明しません。気になる方は、誤差の逆伝搬などで調べてください。

そして、この更新されたパラメータを使って再度、訓練データの入力xから出力yを計算し、実際のyとの誤差を計算し、誤差が小さくなる方向にパラメータを調整します。

これをひたすら、誤差ができるだけ小さくなるまで繰り返します。これが、学習です。

個人的に、上司に出した報告書が修正依頼で戻され、上司と何度も壁打ちしながら、報告書をベストなものにしていく過程が学習のイメージです。この過程を一回行うと、次からは、その上司に対しては認識の相違の少ない報告書が作れる勘所がつくと思います。このとき、あなたの中で学習モデルが作られたと解釈できるかもしれません。

過学習

学習の過程で、AIモデルが訓練データに対して過剰に適応してしまう現象を過学習と言います。

過学習が起こると、訓練データに対しては非常に高い精度で予測できるものの、未知のデータに対する予測精度が低下してしまいます。

実践的には、訓練データを増やしたり、正則化と呼ばれるパラメータの制約を加えたりして、過学習を防ぐ対策を行います。

この過学習って馴染みありませんか?

marimoは、テスト勉強で同じ問題ばかり解いて、テストでパターン問題は解けるが考える系や新しい問題に対応できなかったり、プレゼンのために発表を原稿通りに練習して臨むと、予想していない質問に柔軟に答えられなかったりということが思い当たります。

何が言いたいかというと、訓練と実践がほぼ同じな場合を除いて、

AIも人も訓練でのインプットはそこそこにして、早めに実践的にアウトプットを行い、そこからフィードバックを得て改善していくのがベストな学習のやり方なんじゃないでしょうか

と、過学習を勉強してて思いました。

AIに人生を学べますね😎

さいごに

ちょー雑にAIモデル(ニューラルネットワーク)は何かと考えると、関係ありそうな入力データxと出力yを繋げる関数fがAIモデルと言えます。

つまり、模式的に示すと、Input: x → 関数f (これがAIモデル) Output: y

これは、この世の宇宙の根幹が、共通の物理法則と、それを計算する数式で成り立っているから、入力データxと出力yの間にある程度の関係があれば、十分な表現力のあるニューラルネットによって、その関係を近似できるということなのかなぁと勝手に思っています。

知らんけど

コメント

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