Beyond the State-of-the-Art

最先端を超えたいと思ってる(大嘘)エンジニアのブログ

Qiitaにクソ記事を載せたことに対する反省

つい最近、Qiitaにクソ記事を投稿しました。 qiita.com

この記事はQiitaのとある炎上記事に便乗して書いたものです。 早く公開することを考えて、薬にも毒にもならない薄い内容の記事になりました。

記事のクオリティ自体は大変お粗末なものでしたが、便乗したおかげで、いままで書いた記事よりも多くいいねが貰え、Qiitaの1日のトレンドにも掲載されました。コメントでは古代言語に関する情報を仕入れることもでき、個人的には満足できる結果でした。

ただ一方で

で書かれているように、真面目に技術記事を探している方々に対してノイズになってしまいました。 これについては大変申し訳ないと思っています。

Qiitaはプログラミングの知見を共有する場所であって欲しいと思ってますし、かつてトレンドに自己啓発的な記事ばかりが載っていたときはトレンドに辟易していました。なので、今後はQiitaの健全化のためにも、前回のようなふざけた記事は書かないようにし、これまで通り細細と技術的な記事を書いていきたいと思います。

最近はElixirに興味があるので、それ関係の記事を増やしていきたいなと思います。

気になったビジネスニュース 2018-10-18

セプテーニ、専門のクリエイティブ研究チーム「TikTok LAB」を設立

rtbsquare.ciao.jp TikTokの注目度が高まっていますね。TikTok専門の広告クリエイティブ研究チームが設立されているということは、それだけ市場価値の成長が見込めるアプリなんですかね。

サイバーエージェント、アニメレーベル「CAAnimation」の設立について

rtbsquare.ciao.jp サイバーエージェントがアニメ制作レーベルを設立とのこと。CygameとかAbemaTVとかと連携して、サブカル・エンタメのエコシステムを構築しようとしてるんですかね。

Deep Learningをゼロから作ることにした(その2)

下記の本の勉強の続きです。今回は3章をフォローしたので、所感などを書きます。

3章 ニューラルネットワーク

2章でやったパーセプトロンからニューラルネットワークに移行するスタイルで書かれています。

実装するニューラルネットワークは3層のもので、移行のところでシグモイドやReLU等の活性化関数の導入がありました。 出力層の設計のところでsoftmax関数の導入がありました。softmax関数はn次元ベクトルからn次元ベクトルへの関数で、関数の値のk成分は

  \displaystyle f(\mathbf{x})_{k} = \frac{ \exp (x_k) }{ \sum_{i=1}^{N} \exp (x_k) }

で定義されます。ただし、この定義をそのまま使うとオーバーフローしやすくなるので、

  \displaystyle \frac{ \exp (x_k) }{ \sum_{i=1}^{N} \exp (x_k) } = \frac{ \exp (x_k + C) }{ \sum_{i=1}^{N} \exp (x_k + C) }

という関係式(Cは任意の定数)を使って、オーバーフロー対策をするという話が少し面白かったです。この関係式の証明は簡単にできます。

ニューラルネットワークの実装は、Numpyのおかげでスッキリと書けたのが良かったですね。

章の最後は、MNISTのデータと学習済みモデルを使って、実際に文字画像認識するという内容でした。データとモデルの準備は、オライリージャパンのGitHubリポジトリにあるPythonスクリプトで行うようになってました。deep learning以外のことに紙面を割くのは教育的ではないので、データとモデルの準備のコードの説明がなかったのは仕方ないとは思いますが、「ゼロから作る〜」というタイトルと乖離している印象を受けて少し残念に思いました。個人的には本書だけで完結する形式が望ましかったですね。

次章

次章ではニューラルネットワークで実際に学習を行います。

Deep Learningをゼロから作ることにした(その1)

最近Kerasを使って試しにLSTMでcos曲線を予測するというのをやってみたのですが、deep learningについては雲を掴むような感じで何もわかりませんでした。 そこで、deep learningの原理から実装までをひと通り知るために、次の本を読みながらdeep learningを実装することにしました。

このシリーズ記事では上の本で勉強した事について適当に書こうと思います。今回は1〜2章について書きます。

1章 Python入門

Pythonは普段からよく触っているので、基本的に軽く目を通しただけです。Numpyに慣れていないので、Numpyのところを重点的に読みました。ブロードキャストの有効活用例はいまいちイメージできないですね。Numpy配列のflattenメソッドは便利そうだなと思いました。

2章 パーセプトロン

ニューラルネットワークの前身?であるパーセプトロンについて。AND・NAND・ORといった単純な論理回路パーセプトロンで表現。実装例を見ると、Numpyのelement-wise productは便利だなと思いました。

本章では線形分離性について説明されていて、XORは単一のパーセプトロンで表現できず、AND・NAND・ORを使って多層のパーセプトロンで表現できることが書かれていました。多層パーセプトロンを表す図がニューラルネットっぽい図だと思いました。

次章

次章はニューラルネットワーク入門。

ブログ名を変えました

表題の通り、ブログ名を変えました。新しい名前は「Beyond the State-of-the-Art」です。大文字にする場所はここで合ってるのかどうかちょっと不安です。

タイトルは「最先端を超えて」という意味ですが、特に思いを込めているわけではありません。最近知ったstate-of-the-artという言葉を気に入ったので、それをブログ名に使いたかっただけですね。あとbeyondは「beyond the standard model」という素粒子物理学の言葉を意識しています。

ということで、心機一転してブログを続けたいと思います。