順序
参考にした書籍はこちら:Pythonニューラルネットワークプログラミング(Douban)(douban.com)
Xiaobai、基本はゼロ、そして他のより複雑な本は理解できません...
01. フォワード計算
左から右へ、入力値に従って出力値を取得します
概要
これはニューロンの数学的形式です。
閾値関数
シグモイド関数:
具体的にはこの形状:
入出力
おそらく次のように計算されます。
結合入力の概念があります
具体的な計算プロセスは次のとおりです。
マトリックス形式
結合入力は乗算と加算のプロセスです。
行列の乗算のようです。
したがって、結合された入力は行列乗算の形式で記述することができます。
これはカプセル化です...フレームワークにカプセル化され、ユニバーサルになります。
X=ウィスコンシン
W は重み行列です: 重み
各レイヤーには 2 つのノードがあり、これは 2*2 のスケールです。
I は入力行列、入力です
各レイヤーには 2 つのノードがあり、これは 2*1 のスケールです。
この行列のサイズは、前の層と現在の層のノードの数に関連します。
02. 逆算
右から左に、期待値と実際の値の差を計算します。
この差分値は重量を調整するために使用されるため、差分値は重量ごとに個別に計算されます。
どうやって数えますか?
結合された入力であるため、この誤差は複数の重みによって発生します。
重みは辺の重さで、両端がある辺を辺、片方しかない辺を点といいます。
ケース1
出力層 3 と隠れ層 2 の間のリンク間のエラーをどのように分割するか?
大丈夫、もう終わりですか?これはまだ終わっておらず、入力層 1 と隠れ層 2 の間のリンクにはまだエラーが割り当てられていません。これはどのように計算しますか?
ケース2
まず第一に、逆伝播するにはエラーがなければなりません
エラーはどこにありますか。これは出力層ではありません
再結合により誤差が得られます。再結合誤差はリンク上のエラーの合計に等しいです。リンク上のエラーは何ですか? 前のステップで按分することで得られます。
マトリックス形式
マトリックス形式でパッケージ化することもできますか?
再結合エラーは各リンクのセグメンテーション エラーの合計に等しく、セグメンテーション エラーは乗算によって計算されます。最初に乗算、次に加算...行列の乗算も同じです。
さらに、行列の添え字から、それが確かに逆伝播であることがわかります。
この行列は、順方向計算で使用される重み行列の転置とみなすこともできます。
03. 導出と更新
数字を推測してください。5 が大きすぎる場合は、3 に変更される可能性があります。
各重みには、対応する誤差が比例的に割り当てられます。誤差に応じて重みを 1 つずつ更新するにはどうすればよいですか?
計算プロセスから、誤差は出力に関連し、出力は重量に関連していることがわかります。したがって、誤差は重量に関連しています。
勾配降下法
(メッセージ数 14 件) ニュートン法 - 勾配降下法_leo_fighting のブログ - CSDN ブログ_勾配降下図
根据误差更新权重,单个权重是个标量
已有标量X,更新后是X+ΔX
那么,ΔX,是正是负?
和斜率反着来就行了;斜率正数,就正,斜率负数,就负
负号有了,具体的值是多少呢?大概和斜率绝对值有关吧
一个标量X,就是这么更新的。
如果误差和8个权重标量有关呢?如上图。
一元的是斜率;多元的就叫梯度了,梯度是个向量,每个分量都是偏导的形状
无非就是1+1和的关系,重复而已
偏导
那么,误差关于权重的偏导怎么求?
2和3之间的是这么算的:
1和2之间的可以类比:
矩阵形式
能不能也封装成矩阵形式?
这个不存在什么先乘法再加法的情况;但是先写写看吧
可以把那3个部分,抽象成函数的形式,俩变量,ij
怎么看呢?
先按住j——让j当常数【偏导就是这么干的】;
再放开i——让i作变量
就看到结构上的规律了。
后记
原理大概就这么多。
书的后面好像还有个实际应用。