プログラミングによるアウトプットは抽象的な思考をしやすくしてくれる

 今日は大学がなかったので外にほとんど出ず、ツイッターや技術書を読みながらプログラミング。

 なんでこんなことやってるかっていうと将来自立したいからです。でも、何やりたいのって言われると何もない。だから、興味の湧いた方向にエネルギーを向けて暴発してます。本当にここにエネルギー割いて大丈夫なのかなってのは日々常々考えてることではありますけど。深層学習のプログラムが完成したら別の視界に立てればいいなと思って続けてます。


 とりあえず今日も深層学習のプログラミングを進めていました。とはいってもオンボロ骨董品レベルですが。

 理論の理解とアウトプットを兼ねて作っているのですが、今回は今までとやり方を変えました。

 ビル的な構造物にしてどんどん上の階に増やしていくんじゃなくて、パーツごとに一軒家として作ってみました。それでうまく動くかどうか確認。そしてうまくいったらあとあとビルに組み込んでこうと思ってます。

 最初失敗したのがいきなりビルを作ろうとしたことで、ビルがどんどん高くなってからエラーが出てどの階がおかしいのか全く分からず建物ごと放棄してしまったことがあります。

 それにならないように今回は一軒家を大量に立てて、最後に部屋をビルみたくくっつけるっていうやり方でやろうと思ってます。

 本当に上手い人はいきなりビルから作るのですが、自分はビルを構築する作業に頭を取られてしまうので、集中力が散漫してペースが落ちてしまわないように一軒家から組み立ててます。


 何かをプログラムに落とし込むには3段階あると思いまして。

 まず理論書などを読み仕組みを把握するところです。ここが最難関だと思います。

 そのあとはその数式や考え方などをプログラムに落とし込む作業です。これらは慣れの部分がかなりあるんじゃないかと思ってて、場数を踏めばスムーズにことが進むようになると考えてます。ただ、最初のうちはかなりしんどい。今も現在進行形で悩みながら作ってます。

 最後に構造化です。理論から得た知識をなんとなくものにしていく過程で第二段階のプログラミングをしていくと思うのですが、それを完全に消化しきった段階で、理論の各要素を結合したり共通点を共通化したりして高度に仕組みを構造化していきます。


 この3つの段階って多分すごいことで、モデルの根本原理みたいなものを取り出していく作業だと思うんです。ものを理解してそれを定式化し、そこから根本原理を手繰り寄せていく。

 これってまさに抽象的な思考ですよね。プログラミングでは、その思考自体の方法論を定式化・見える化することで脳のキャパシティを思考の対象に集中させられる。思考そのものを自分で司る必要がなくなるのです。

 したがって頭の中では組み立てにくかった論理パズルなどが当てはまっていきやすい。今はこの段階、あれを考えるのは次の段階だってわかるので思考が混線しません。ある意味邪念がないとも言えるかもしれないです。


 だから僕にとってプログラミングの習得はそれ自身以上の価値があると思っています。

この記事が気に入ったらサポートをしてみませんか?