こんなにきれいに書ける人は稀でしょう。実際にはこんな感じが多いのではないでしょうか。このように○にも×にも、いろいろなパターンがあります。9画素の1と0の組み合わせは、29=512通りあります。9画素でも512通りものパターンがあるのです。実際には遥かに多くの画素数で読み取りますので、天文学的なパターン数になります。すべてのパターンについてこれは○、これは×という風にコンピュータに設定しておくことは現実的ではありません。そこで、これまでの回答者から集めた○×のパターンをコンピュータに学習させて、今後違うパターンが出てきたとしても適切に○×を自動判別させる仕組みが機械学習です。このような画像処理はニューラルネットワークが得意で、前回の記事で紹介した誤差伝播法を使ってプログラムすることができます。【実はとても簡単だった!】誤差伝播法をシンプルにわかりやすく解説します。これをExcelに実装してみましょう。Excelが学習していく様子は、まるで生き物みたいで結構感動的ですよ。教師データを用意するまずコンピュータに教え込むための教材を用意する必要があります。この教材を教師データといいます。今回は次のようなデータを用意しました。○、×ともに22パターンあります。クリックすると拡大しますニューラルネットワークにモデル化する入力層は9つ、出力層には2つのノードを割り付ける次に、この画像処理をニューラルネットワークにモデル化します。ニューラルネットワークには入力層、隠れ層、出力層の3層がありましたね。前回の記事では入力層に2つ、隠れ層に3つ、出力層に2つのノードがあるネットワークで説明しました。【実はとても簡単だった!】誤差伝播法をシンプルにわかりやすく解説します。クリックすると拡大しますまずは、それぞれの層のノードに何を割り付け、合計でノードがいくつ必要になるのかを決める必要があります。今回のケースでは何を入力層に割り付ければよいでしょうか?9つの画素の二値データですね。9つの画素はそれぞれ0か1の値を持ちますが、それぞれをx1、x2、、、x9とします。次に出力層には何を割り付ければよいでしょうか?今回は○の確率と×の確率を出力したいので、それぞれ1つずつ出力を割り付けましょう。O1に○と判断する確率が入る変数、O2には×と判断する確率が入る変数を割り付けましょう。最後に隠れ層ですが、これは設計者が割り付けるのではなく、アルゴリズムが決めることなので分かりません。3つのノードにしておきます。以上を図で表すと次のようになります。クリックすると拡大します活性化関数にはシグモイド関数ここで一つ注意点があります。前回の記事では活性化関数をf(u)=uという恒等関数にしていました。すると、説明が簡単になるからです。今回は出力として確率を求めますので、0~1の数字にするためにシグモイド関数を使います。活性化関数でよく使われるシグモイド関数の歴史や定義について調べてみた。この記事にあるように、シグモイド関数f(u)を微分するとf’(u)=f(u){1-f(u)}というように、わざわざ微分を計算しなくても元の関数で表すことができます。これはプログラミングする上で大変便利です。パラメータの初期値を入力する求めるパラメータは38個さて、これからいよいよ各パラメータ(重みとバイアス)を求めていきます。求めるべきパラメータは、次のように38個あります。θO2まずは、これらのパラメータと教師データをExcelシートに入力します。クリックすると拡大します教師データは入力xi(i=1~9)とtj(j=1,2)の組み合わせが44組あります。これらを順々に行を変えて学習させていって、44組全部終わったら、また1組目から学習させます。これを延々と何巡も繰り返します。パラメータの初期値は0~1の乱数38個あるパラメータ(重みとバイアス)は、まずは初期値をテキトーに決めて、勾配降下法により少しずつ調整していきます。上の図では、初期値は0から1の乱数としています。初期値の次からのデータは空欄になっていますが、これから式を入れていきます。誤差伝播法の計算式を入力する次に誤差伝播法の計算式を入力していきます。前回の記事より、各パラメータの勾配は次のような式で求められます。出力層の勾配、次にその値を使って隠れ層の勾配を求めます。zH1ここで、f’(uO1)はシグモイド関数f(uO1)の微分です。x2よくわからないという人は、もう一度前回の記事を読み直してみて下さい。【実はとても簡単だった!】誤差伝播法をシンプルにわかりやすく解説します。Excelシートに入力するそれでは、以上の式をExcelシートに入力していきます。先ほどAC列まで入力しましたので、AD列から次のように入力します。横に長いので、2つの画面に分けます。(1枚目)クリックすると拡大します(2枚目)クリックすると拡大します最初にAC列までのスナップショットを載せましたが、A~D列までを隠していました。このようになっています。クリックすると拡大しますD列で損失関数Eを計算しています。C列ではその時のパラメータで計算した結果、○か×のどちらの判定になったかを表示しています。B列ではC列で判定した結果と教師データを比較して、合っていればOK、間違っていたらNGと表示させています。学習率0.5で学習させた結果、9巡目で終了しました。求めるパラメータ(重みとバイアス)は38個ありましたが、学習後の値は次のようになりました。クリックすると拡大しますこのパラメータであれば、少なくとも44枚の教師データはすべて間違いなく判定できるということです。正解率の推移は次の通りです。学習率が大きいほど早く収束44枚の教師データをたったの9回読み込んだだけで、100%の正解を出せるようになりました。学習率を変えたらどうなるのでしょうか?学習率を0.2、0.5、1で学習させた場合の結果は、次のようになりました。学習率が大きいほど早く学習が終了しました。ηが1の場合は、たったの6回で終了しました。教師データ以外の画像で試してみるところで、この正解率100%は44枚の画像に対してです。512通りある組み合わせのうちの44通りについて、100%の正解を出せるようになったにすぎません。他の画像はどう認識するのでしょうか?これは教師データには入っていませんが、いかにもありそうなパターンですね。先ほどの学習後の行に、この値を入力してみましょう。すると、ちゃんと✕と認識しました。詳しく見てみると、〇の確率は37%、✕の確率は63%と計算しています。クリックすると拡大しますたった6回見ただけでで44枚をすべて認識できるようになった上に、他の画像もちゃんと認識できるようになるとは、、、管理人は絶対に負けますね。Excelにもこのような頭脳を持たせることができる。AI数学-文系でも理解できる!高校から始めるデータ分析、AIのための数学-データ分析、機械学習に関わる数学に絞り、効率的に学習できるようカリキュラムを構成しました。文系でも理解できるよう丁寧な説明をしています。Pythonエンジニア育成推進協会認定スクールによる高品質な数学コースです。–1000人以上が受講している(株)キカガクの『脱ブラックボックスセミナー』が遂に登場!機械学習の参考書を「閉じてしまった人」への再入門に最適な講座です。微分・線形代数といった数学の基礎からPythonでの実装まで短時間で習得しましょう。荷主の物流部門】どちらで働く方がお得なのか?Next誤差伝播法のアルゴリズムを表記方法からわかりやすく解説します。今回はいよいよニューラルネットワークによる機械学習の講座です。...サポートベクターマシンをExcelに実装して2クラス分類問題を解いてみた。【区間推定の使い方】タイヤの摩耗を具体例にわかりやすく解説します。TOP28【作業分析6】MMCモデル|最適なトラックドック数をSimpyでシミュレーション【作業分析5】トラックの待機台数の多さを人の表情でアニメーション(2)カンボジアの物流でお困りのことがあればお気軽にご相談下さい。学生時代にアジアの雑踏にハマる。誰もが羨むメーカーを退職し「旅するように働く」ことを目指し物流業界に転職。理工学と経営学のダブル修士。2023年1月からカンボジアのオートレスビーチ在住。