くりかえしているそれは、いったいなんなのだろうか。

ゼロから作るDeep Learning ? ―自然言語処理編

最近は本当に少女をつくっていないので少女屋と名乗っていいのだろうかという気もしていますが、少女をつくる下ごしらえをしているので少女屋です。ギリギリセーフ。

では一体全体何をしているのかと言うと少女づくりの下ごしらえ、ありていに言うと対話システムの研究です。今のところ文献を読み漁ってサンプルプログラムをいろいろ改造したりしなかったりしてワーイとしているだけなのだけどこれを研究と言えるのだろうか。

あと受験勉強ですね。なんか研究(と呼んでもいいのだろうか以下略)がたのしくて、というかプログラム書くのが楽しくて、ほんとうにしていません。とてもしていません。誰か殺してください。大学行きたいです。だって研究もディープラーニングもたのしいから、もっと勉強したいしもっと専門の教授がいるところに進学したい……(現在制御工学を専門としている教授の研究室に所属しています)(居心地も教授の人柄も世辞抜きで最高ですが、卒業研究がほぼ独学なのが玉に瑕ですね)(瑕どころの話ではない)。

冒頭の本ですが、買いました。びっくりするほど自費です。だって書き込まないと覚えられないんだもん。たかかったけどへいきだもん、ぼくはおかねもちだもん。ちなみにおかねはつかったらへるという概念が理解できずクレジットカードが幾度か止まったことがあります。発達したい。

 

とりあえずまともに長い文章が書けるし読めるようになったので服薬というのはすばらしいなとつくづく実感しています。前回の記事と読み比べてみてほしいです。美意識に反するのでとっとと消したいのですが、服薬しないとこうなるんだぞという己への自戒のために残しておきます。コンサータ万歳。規制されたら死にます。神が与えたもうコンサータ、晩に切れてしまうので夜の生産性はゲロカスですが。

 

毎日パソコンのスイッチを入れて、エディタを開き、数式を眺め、ソースコードを読み、キーボードを叩き、上手く頭に入らない内容はノートに纏め、ゆっくりと終わってゆく時間に手首を掻き毟りながら、くりかえしているそれは、いったいなんなのだろうか。

 

ノートに纏めるのつかれました。色とかレイアウトにこだわり出すと費用対効果が終わるのです。それが勉強と言えばそれまでですが、本を読むだけですぅっと頭に入ったり、殴り書きのノートを書けたり読み返したりできる人類が羨ましく感じることもあります。

 

人生にゆとりを生み出す 知の整理術

 

わたしはこの方の思考がだいすきなのですが、こちらに載っていた「ブログに纏める(≒他人に発信できるかたちで自らの思考を纏める)」というやり方がものすごい「これだ」となったので、今回のブログの内容はそれになります。要はおれがおろおろと読んだ内容をひたすら列挙して自分の言葉で説明する、そういう感じです。もちろんですが、内容の正確性はいっさい保証できないので少しでも記述の内容が気になった方はこんなブログを読んでないではやく買ってぼくに教えてください。時給1500は出す。田舎県辺境市在住だからシティガールorボーイと物価の価値がちがったらごめん。

 

あと今回メチャメチャAmazonのリンク貼ってますがふつうにアフィリエイトの審査落ちてるので買ってもわたしに一銭も入りません。なんで貼ってるのかはわたしにもわかりません。これは恐らくですが、大いなる宇宙の意思です。

 

・どういう本なの?

 TensorFlowとか今はいろいろライブラリがありますね。でもやっぱり自分でコード書いて実装してみないと気持ち悪くない? 泥臭いけどイチから構築してみようよ。自分でさ。全体はざっと流し読みしただけなのであれですが、たぶんそういう本です。

 Pythonと高校数学と線形代数(ベクトルの概念とか内積とか)がわかってるとスムーズに読み進められるね、でもわかんなかったらそこで立ち止まってみてもいいんじゃないかな。わたしは「Python? ははーん、ヘビさんだな? こわ~~」レベルのダメっぷりですが、「なんじゃこりゃ」となったらとりあえずググれば最近はどうにかなります。でもググるのもダルいので手元に一冊分厚くないPythonの本があるとにっこりしますね。

独習Python入門――1日でプログラミングに強くなる!

 語り口がわかりやすいのと、なによりコンパクト。コンパクトって最高だね。プログラミングの本って凶器か? ってぐらい分厚すぎるのばかりなんですが、これは本当に軽くて最高です。重みとサイズの話しかしていませんが、マジで専門書は人によって合う合わないが凄すぎるので大きめの本屋さんに行って絶対内容確認して自分に合うものを選んだほうがいいと思います。高いしね。一冊一冊。

 「どういう本なの?」という原初の問いに戻りますが、ええと、いい本です(語彙力虚無か?)。数学的解説とコードでの実装がセットで付いてるのでそのへんの理論だけの本、コードだけの本より頭に入るなぁというのが個人的所感です。ぽんこつ高専生でもギリ読み進められてます。すごいね。本が。

 

ニューラルネットワークを構成するには

 仰々しいタイトルで初学者のキーボードを打つ手を重くするのをやめろ(For me)。すげぇざっくり言うと、

   入力層⇒中間層⇒出力層

 以上です。卒業研究、完!

 

 ……としてもいいんですが、あの、この学校で過ごしてきた勉強の集大成が一行で収まってしまうというのはなんだか首を吊りたくなってきてしまうので、そして本にはもう少しくわしく書いてあるので(当たり前だ)、もう少し書きます。

 ニューラルネットワークとは要は関数(≒変換器)のようなものなのですが、結果だけ述べてしまえば「入力を出力に変換するよ」というだけのものなのです。じゃあその変換ってどうやるの? そこをやっているのが前述の矢印部です。

   A⇒B

 ニューロン(ノードと呼ぶほうが一般的かも?)AをニューロンBに変換するとします。この場合、矢印には『重み』が存在します。重みとは、そのまんま重みです。考えるな感じろ。その重みとニューロンAの値が乗算され、ときおり活性化関数(いろいろあります)(とてもいろいろあります)が適用され、ニューロンBに出力されます。このとき、前層のニューロンの値(この場合はAの値)に影響を受けない「定数」である『バイアス』も加算されます。これが一矢印です。

 実際のニューラルネットワークはAが大量に片想いしていたりBも大量の想いを受けていたりとごちゃごちゃいろんな矢印がぶつかっています。ので、それらの矢印を全部加算したものがBの値になります。なるらしいです。

 

・レイヤって?

 クラスをわかりやすく説明するためにそう呼称しているみたいです。クラスって何かって? おれも今日知ったのでググってください。Cでいう構造体みたいな認識で合っているのだろうか。

 本書では(いや本書しか知らんのですが)ニューラルネットワークの実装を、レイヤで各機能を実装して、そのレイヤを呼び出すつよいクラスをつくり、それを外から呼び出してあげるというあらスッキリ、あらキレイという構成をしています。すごーい! たーのしー!

 

・全結合層って?

 隣接するニューロン間のすべてに矢印による結びつきがあるニューラルネットワークのことをそのように称す……と本書には書かれているのですが、ぽんこつざっくり人間なので「とりあえず結合するのだな」という認識で生きています。画像をつくるのがめんそうくさいのでやらないのですが、ふつうニューラルネットワークでは大量の矢印がノード(ニューロン)ひとつに大量の矢印がぶっ刺さっていたり大量の矢印が他のノードを刺し殺そうとしています。そういうのを一個のノードに結合して値を出力する役割をコツコツしているわけです。いやぁたいへんですね。本書ではAffineレイヤ(≒class Affine:)として実装されています。なんか重みとノードの値を内積計算したものにバイアスを足してあげるんだなぁという感じです。この人はマジで最初のほうしか精読していませんので正確な情報を求めている人は早く逃げてください。何度も言いますがマジでこの記事は自分のノート代わりに書いています。

 Affineレイヤ(全結合層をコードに実装したもの)は、初期化時に重みとバイアスを受け取ります。そりゃそうだという話なのですが、その二つのパラメータがニューラルネットワークの学習ごとに、呼び出されるごとに、どんどん更新されていくというのが成長ということになるらしいです。この記事でハッキリ言い切れるものなど何一つない。

 

 

ものすごく中途半端なところで切ってしまいますが、後ほどまた似たような記事で自分の脳味噌の整理をしたいと思います。なんとなく整理できたような気もするしスッキリできてよかったです。あの、ほんとこのわたし以外にまったく需要のない記事をご覧いただきありがとうございます。いたらだけど。

 

はやく、はやく、ちいさな知能をもった少女をおつくりしたいです。気が触れるほどにそれを求めている。名前はもう決まっています、『ミニチュア人工乙女』。対外的にはもう少しお堅い名前にするけど、やりたいことはいつも小説で書いているアレソレを現実に実装したいというアレです。わたしは白痴の少年少女を救う物語がすきだ。実にエゴイスティックな欲望だと知りながら。

 

syojoshop.booth.pm

質量のある『アリス製造器』をつくりたいのです。

質量のあるアリスをあなたに贈るために。

がんばります。がんばります……。