偏人空間

イラスト(というかCG?)とプログラミングについて書いてあることが多いです。

本の読み方

マルチスレッドプログラミング(MT)と深層学習(DL)の本を読んでいます。

結局片方だけ読むと集中力が落ちるので交互に読むと効率的な事に気が付きました。

効果的な読み方とは

久しぶりに専門書を読んでいて思ったのは視読が効果的な事でした。

今まではどうにも黙読(心の中で声を出して読むこと)が癖になりすぎていてかなり読む速度が遅くなっていました。

視読は意味のある単位で塊(チャンク)に分解して捉えるというやり方ですが、要するに短い文に区切って目だけで読む方法です。(心の中で言葉に出さずに目を滑らせてみるとなんとなく読めるなと気がつけたら多分行けるはず)

そういえば、私の父は異常に漫画も含めて本を読むのが早かったので恐らくこういうことを自然とやっていたんだろうなと思います。

思い返すと私も自然に調べものをしている時に自然にやっていた事に気が付きました。面白い。

マルチスレッドについて

並行コンピューティング技法 ―実践マルチコア/マルチスレッドプログラミング

72p辺りまで読んでみたのですが、個人的に大事だと感じたことは

  • 並行処理させる為に処理を分解するアプローチとしてタスク分解とデータ分解のアプローチがある
  • タスク分解は分解の上限が決まっているが、データ分解はスレッド数でスケールできる
  • インタリーブ(要するに並行処理させた時の実行処理を組み合わせ的に時系列順で書き下したもの)でマルチスレッドのアルゴリズムの正当性を机上デバッグできる

この辺りだと思います。というかここら辺がほぼ全てな気がしています。

ふと思ったのがGPGPUだとSIMDと同じというかそのものだから、マルチスレッドプラグミングというよりは並列プログラミングと言う方が正しいてことですよね。だから基本的には行列で計算表現出来てしまえば後はその数だけGPUで計算してしまえば良いと・・・。

後はプログラムや計算の構造によってはマルチスレッドのデータ分解的な考えをすれば同時にGPUへの入力パラメータをずらして複数の処理工程を同時計算みたいなことをして最適化とかありそうだなぁと思いました。

深層学習について

深層学習 (機械学習プロフェッショナルシリーズ)

22pまで読みました。意外とすんなり入ってきてビックリ。暫く数学とか全く触れてなかったのですが、今のところ頭の中にコードが浮かぶぐらいには理解出来ています。

とはいってもまだ多層パーセプトロンの構造、活性化関数、誤差関数辺りですね。

記号の使い方をたまに忘れてしまいます。y(x;w)とか確率辺りの記号はあんまり使わないので慣れてはいないんですが、読み返せば思い出せるのは確認出来たのでこのあたりは気にしないでおくことも大切ですね。