やねうら王の学習部、すごく良くなったよ

やねうら王の学習部、う○こではないかと書いたばかりだが、コードを全面的に刷新した。tanuki-さんの協力もあって、とてもシンプルで美しいコードが書けたし、おまけに極めて省メモリで学習が出来るようになり(評価関数パラメーター用のメモリの4.5倍の学習用の重み配列があれば良い)、かつ、とても高速になった。

省メモリ化のためにKKP/KPP配列をfloat型やdouble型などで別途持つような実装にはせず、生のKKP/KPP配列を用いて、この小数部として8bit(int8_t)を補助bitとして1バイト変数に持つような実装になっている。つまり、やねうら王のAdaGradの更新式は以下のように実装されている。

私が太古の昔(40年近く前)に見たことのあるテクノロジー(もはやロストテクノロジー?)で、とてもセコい実装ではあるが、これで万事うまくいく。

また、新しい学習部による実験結果などはのちほど別の記事に詳しく書く。

やねうら王の学習部、すごく良くなったよ” への6件のコメント

  1. 26行目の V – v[i] の結果って、-0.5~+0.5ですよね?
    そうすると、127倍じゃなくて、254倍でも良いのでは?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です