機械学習のプログラミングとブラックボックス
おはようございます。
今日は、今、自分が勉強している機械学習について、
自分の復習も含めて、プログラミングしたことのない方にも分かるように伝えるチャレンジみたいな感じですね。
最近、トレンドですけど、ここ5年とか、もっと前からかな。
私も1回、触ったことがあったんですよ。
機械ディープラーニングのライブラリだとか、フレームワークというものがございまして、
プログラマーがそれを使うと、誰でも簡単に機械学習とかディープラーニングのプログラムが作れてしまうという便利アイテムみたいな。
料理とかで例えると、カレールーだとか、コンソメスープだとか、
あれって作り方が分からなくても、使えば美味しくなるじゃないですか。
誰でも使えるようになっているじゃないですか。
ああいう感じに、誰もが使いやすく、その中身を知らなくても、作り方を知らなくても、
使えるようにしてくれているのがライブラリとかフレームワークなんですけれども。
それを使うと、中身を全く知らなくても作れちゃうんですよね。
でもね、それを触ったのが1年くらい前。
その大量のデータをそのプログラムに加わせてあげると、本当に機械学習できちゃうと。
すごいなと思ったんですけど、ブラックボックスってよく言うんですよね。
機械学習とかAIの頃って。
誰も中身の仕組みが分からないまま使っているみたいな。
そのブラックボックスがあるがゆえに、ビジネスの自由の決定とかのときに、
決定権を持っている方々がですね、
このAIがこういう事実を示しているけれども、
どういう理屈で?っていうときに中身がやっぱりブラックボックスだから、
ちょっと敬遠されがちみたいな。
説得力がないように捉えられることもあるみたいなこともあったり。
私自身があんまり中身を知らないまま使うのが嫌いで、
実際、ライブラリーとかフレームワークを使いながら作ったんですけど、
これ中身で何やってるのか本当に分からないですよね。
データ食わせたら学習が済んで、
実際に別の、例えば画像学習だとか、
典型的なやつでいうと、練習とかでよく使われるんですけど、
アメリカの家賃のデータがありまして、
部屋の面積だとか駅からの距離だとか、何十項目ぐらいそういう項目があって、
それを食わせ、それで訓練をすると、
じゃあこの条件の部屋何円ぐらいですかっていう問題にAIが答えてくれる。
でも、作れるんですけど、本当に中身で何やってるのか分からないですよね。
それが純粋につまらなくて、
なんじゃこりゃって思いながら、
しばらく、数ヶ月機械学習を勉強することになったので、
今度はライブラリーとかフィルマークの中身、
仕組みがどうなってるのかなっていうのを勉強してます。
前置きが長くなったんですけれど、
勉強する前までは本当に中身が自分にとってはブラックボックスで、
全く分かんないみたいな。
何か分かんないけど使えるみたいな。
勉強した後、
機械学習の仕組みと学習方法
思ったのは、マジでこれただの計算だなって思いましたね。
マジでただの計算だなって思って、
一つ一つの計算式だとか、
すごいシンプルで、
ただそのシンプルな計算のものすごい塊みたいな。
なので全体を見るとすごく複雑なんですけれど、
一つ一つの計算式は、
全体を見るとすごく複雑なんですけれど、
一つ一つクローズアップしてみると、
こんなシンプルな仕組みで成り立ってるんだなっていうのがすごく驚きでしたね。
今リッスン撮りながら。
行ってらっしゃい。
庵野ん京都のアルバイトの男の子とすれ違いました。
要はあれって、全体的に何をしているのかっていうと、
要は入力に対して、学習時ですね。
学習時はある画像を与えますと。
よくあるのは数字の画像ですね。
0から9の数字の画像。
縦横28ピクセルの合計724ピクセルから。
その画像を学習時に何千とか何万とか与えるんですよね。
それが一番基本的な、
まず勉強する全結合ニューラルネットワークっていうのがあるんですけれども、
一番シンプルなやつですね。
よくニューラルネットワークの図とか見たことある方いらっしゃると思うんですけれど、
丸と線がいっぱい繋がってるやつ。
一番左の線、丸が入力スタートポイントで右に計算が進んでいくと。
一番右の丸い部分がニューラルネットワークが出した答えになるんですけれども、
0から9の数字でいうと、
10パターンですよね。
この例でいうと、一番右の丸が10個になるんですけど、
上から0、0、1、2、3、4、5、6、7、8、9を示すと、
それに0から1で確率で出るんですよね。
この画像めっちゃ1やってニューラルネットワークが思ったら、
1のところに0.9とかすごい高い確率が出せれば学習成功という感じでございますけれども、
それの学習をどうやってるのかっていうのがミスですね。
今日話したかったところ。
これは微分なんですけど、微分って言うとちょっとアレルギーを起こす方もいるかもしれないので。
学習時には答えをあげるんですね。
例えば0の画像を入力すると、AIが確率を出すと0から9のこれっぽいなっていう。
それに対して答えを教えてあげるんですね、計算の後に。
その計算結果と答えの誤差を出して、その誤差が減るようにニューラルネットワークを調整していくんですよね。
それだけです、本当に。
本当にそれだけで複雑な画像認識とか生成AIとかできちゃうんですよ。
めっちゃシンプルに言うと、例えばめちゃくちゃ単純化しますけど、
高橋くんが1000円の買い物をしてきましたと。
1000円の買い物をしてきて、リンゴが1個100円でした。
リンゴいくつ買いましたかっていう問いに、
AIの場合は、僕らも直感的に10個ってわかるんですけど、
ニューラルネットワークで学習させる際は最初はランダムにそのリンゴの個数を与えるんですね。
例えば5とか500円。
答えは1000円でした。
全然足らないやん。
ってことでちょっと個数を増やすんですね、今度は。
8とか800円。
ちょっと答えが近くなったけど、まだ足りないねって言って調整していく。
本当にそんな感じなんですよね。
ちょっとついちゃったんで、今日はここまで。
またな。