2025.07.07 14:34
ニューロン再び
・令和7年7月7日なのだそうで。
・まぁ、8年の8月8日のほうが末広がりで良いんじゃないかとか10年10月10日なら2Aで「*」のASCIIコード・・・とかいうのは話題にもならないだろうな。
・そんなこんなでAIごっこしていたのだけど、どうにも綺麗にいかない感じがする。教師データがシーケンシャルなストリームとして与えられるとき、それに従って平均や分散がゴロゴロと動くわけで、それを使ってMACやら活性化関数の値を求めてそこからバックプロパゲーションしていったらあっちもこっちもグラグラしてしまって落ち着かない感じがする。
・まぁ、最終的には収束するのかもしれないけど、感覚的に落ち着かないのでGeminiに質問してみる。
・何か話の辻褄が合わない感じがしてきたのだけどやっとわかったのは「ミニバッチ単位でまるごと処理するよ」という話。
・たとえば2入力で、[1,2],[3,4],[5,6]という調子で入力を順番に与えるのではなくて、[[1,2],[3,4],[5,6]]という具合にまとめて(この場合なら3セット分)処理してしまうということ。
・そして、バックプロパゲーションでのパラメータ更新も偏微分値の「平均値」から算出するという。
・それって変数(関数の引数も)の型に思い切りルーズなPythonだから気楽にできることで、C/C++だと結構面倒じゃないのか?と尋ねたらそのとおりだと。
・pythonだとたとえば
def muldot(t0,t1):
return np.dot(t0.T,t1)
とかしてやっておけば、
p = np.array([[1,3,5]])
q = np.array([[1,2,3]])
muldot(p,q)してやれば
[[1,2,3]
[3,6,9]
[5,10,15]]
という感じの3x3の行列になるわけだ。
この大雑把さがこういう用途には最適なのだろう。
この記事へのコメント
コメントを書く