昨天講到CNN的限制,那今天就要開始介紹甚麼是膠囊網路,膠囊網路是利用甚麼方法來傳遞向量資訊的
Capsule是一群的神經元,經過演算法運算過後或得到向量的輸出
而向量的輸出同時也是其他膠囊的輸入
一個膠囊裡面的輸入,會有多個向量,這邊假設只有兩個向量,一個v1,一個v2,將這兩個向量分別乘上一個權重矩陣W1、W2,會產生u1、u2,再來後面的c1、c2是在testing的時候動態決定的,這個動態決定的方法稱為dynamic routing
Sabour, Sara, Nicholas Frosst, and Geoffrey E. Hinton. "Dynamic routing between capsules." arXiv preprint arXiv:1710.09829 (2017).
dynamic routing的方法是,模型先產生一個b1、b2,然後會將產生c的方法重複r次,這個r是一個超參數
之後將這兩個值(b1、b2)經過softmax後產生c1、c2,將u1乘上c1,u2乘上c2,做一個權重和,會得到S這個向量
將這個向量經過一個擠壓函數(Squashing)(下方的v),擠壓函式(Squashing)就是若向量的長度越長,得到的值就會越高,經過擠壓含術後會得到v1這個值
最後將v1跟u1還有u2去做內積,去更新b的參數,在下一次的iteration就會更新c1跟c2的值
這樣子的做法就是可以讓結果偏向正確的結果
EM routing 是hinton在2018年對capsule做的修改
右方新的膠囊型態則是會需要pose matrix跟activation,由於從向量改為矩陣,因此擠壓函數在這邊必須做一個修改
將會使用activation來取代擠壓函數
EM Routing傳遞的方式略為複雜,明天看熟之後會再將這部分的筆記補上
今天收工