blog.tmp.tokyo

No Promises Await at Journey's End

新シリーズに向けた準備記事

このブログで人気記事は大きく3つあります。

  • 羽田空港の滑走路運用の記事
  • Deep Learning 関連の記事
  • (なぜか)無双OROCHI3 最強武器の記事

羽田の話は最近空港に行けてなくて書けないので、少し Deep Learning 関係の記事をしっかり書いていこうと思います。

今回はそのための準備記事になります。

これまでの記事

まず、これまで書いてきた人工知能、AI、機械学習、深層学習(Deep Learning)関連の記事を整理しておきます。

TensorFlow に関する記事

最初に書いた「TensorFlowはじめました」の本をベースに書いた記事です。

www.blog-tmp.tokyo

www.blog-tmp.tokyo

www.blog-tmp.tokyo

www.blog-tmp.tokyo

Chainer に関する記事

一度だけ書いた Chainer に関する記事。

www.blog-tmp.tokyo

Deep Learning に関する記事

これが割と息の長い記事になっております。

旧版

www.blog-tmp.tokyo

www.blog-tmp.tokyo

www.blog-tmp.tokyo

www.blog-tmp.tokyo

新版

www.blog-tmp.tokyo

www.blog-tmp.tokyo

www.blog-tmp.tokyo

これまでの反省

記事を見ていただくとわかりますが、機械学習とか Deep Learning と言いつつも、iPhone でやることに特化しすぎていました。それ自体はネタにもなって引用していただいたりしたことはありますが、結果的に機械学習とかを利用して何か作れたわけではありませんし、目的と手段がやや逆になっていたと言わざるを得ません。

iPhone でやることに関しては通勤時間が長かったので、その時間をうまく活用したいという思いから着想を得ていましたが、新型コロナウィルスによる外出自粛の影響により、通勤時間はゼロになりました。iPhone にこだわる必要はなくなったのです。

今後の展開と新シリーズ

新シリーズを立ち上げます。内容としてはこれまで通り「ゼロから作る Deep Learning」をベースとした学習内容になりますが、私が学ぶ上でふと疑問に思ったことを徹底的に深掘りして調べてみたり、試したり、考えたりしたことを1記事1つ紹介していきます。

したがって「ゼロから作る〜」の本に書かれた内容を順に追って記事にしていくことはしません。そういうことをしている記事は多くありますし、そちらを見ていただく方が詳しいのでためになります。

私は私なりにじっくり顕微鏡で拡大して見るように一つのことに着目して、その疑問点を解決して次に進もうと思っています。

そのための学びはすでに始めており、違和感を感じたり、少しでも疑問に思ったことは解決するまで先に進まないようにして勉強しているので進みは遅いですが、これまでよりよく理解できていると思っています。それを紹介していきたいと思います。

たぶん、同じように疑問に感じている人もいるかと思います。少しでもヒントになればと思います。

数式の記述

機械学習や Deep Learning の内容はどうしても数学とは切り離して考えることはできません。私は大学では物理学を専攻していたので数式が出てきてもそれなりには理解できますが、上にも書いた通り私が疑問に思わなかったことは書きません。

数式に関しては、はてなブログに機能が用意されており TeX の記法が使えるようなので、そちらを利用して書きます。

数式の練習

試しにいくつか数式を書いてみます。はてなブログでは MathJax を利用しているみたいです。私は大学では LaTeX2e を利用して卒論を書きました。

簡単な方程式

まずは簡単な方程式を書いてみます。

 x^{2} + 2x + 1 = 0

こんな感じになります。いわゆる2次方程式ですが、これは以下のような技法です。

[tex: x^{2} + 2x + 1 = 0]

この書き方をコピーすれば皆さんのブログでもそのまま使えます。はてなブログに用意されていますので。教科書とか数学の本に書かれている数式が美しく書けるのです。これが TeX というソフトウェアです。

分数

分数ももちろん書けます。

 \frac{1}{2} + \frac{2}{3}

これは以下のように書きます。

[tex: \frac{1}{2} + \frac{2}{3}]

ちなみに皆さんはこの  \frac{1}{2} + \frac{2}{3} はできますか?答えは  \frac{3}{5}ではありませんよ。念のため。

連立方程式

少し書き方が分からなくて悩んだのがこれです。


\begin{cases}
2x + 3y = 0 \\
5x + 7y = 8
\end{cases}

これのポイントはいくつかあって、ひとつは2つの式をまとめるカッコです。そして、もうひとつは式の改行です。

[tex:
\begin{cases}
2x + 3y = 0 \\\
5x + 7y = 8
\end{cases}
]

パーセプトロン

また初回にも出てきますが。

 \displaystyle
y =
\begin{cases}
w_1x_1 + w_2x_2 \; \leq \; \theta \\
w_1x_1 + w_2x_2 \; \gt \; \theta
\end{cases}

こんな感じで書いています。慣れると複雑と思わなくなるのが不思議です。

[tex: \displaystyle
y = 
\begin{cases}
w_1x_1 + w_2x_2 \; \leq \; \theta \\\
w_1x_1 + w_2x_2 \; \gt \; \theta
\end{cases}
]

\displaystyle はあってもなくてもそんなに影響なさそうです。少なくとも私の環境では。その他、次のような数式が出てくるので試し書きしてみてます。

パーセプトロン (バイアス込み)


y = h(b + w_1x_1 + w_2x_2)


h(x) =
\begin{cases}
0  \;\;\; (x \leq 0) \\
1  \;\;\; (x \gt 0)
\end{cases}

[tex: 
y = h(b + w_1x_1 + w_2x_2)
]

[tex:
h(x) = 
\begin{cases}
0  \;\;\; (x \leq 0) \\\
1  \;\;\; (x \gt 0)
\end{cases}
]

ReLU 関数

活性化関数の一例として出てくる ReLU 関数。

 h(x) =
\begin{cases}
x  \;\;\; (x \gt 0) \\
0  \;\;\; (x \leq 0)
\end{cases}

[tex: h(x) = 
\begin{cases}
x  \;\;\; (x \gt 0) \\\
0  \;\;\; (x \leq 0)
\end{cases}
]

シグモイド関数

こちらも活性化関数の一例として登場。

 h(x) =
\frac{1}{1 \; + \; \exp(-x)}

[tex: h(x) =
\frac{1}{1 \; + \; \exp(-x)}]

積分

インテグラル。あまりよくわかりませんが、この場合は \displaystyle をつけないと大きくなりません。やはり影響ありますね。

\displaystyle
\int_1^{t} f(x)

[tex:\displaystyle
\int_1^{t} f(x)]

平方根

いわゆるルートの記号です。

 \displaystyle
\sqrt{4} = \sqrt{b^{3} - 2ab + a^{2}}

[tex: \displaystyle
\sqrt{4} = \sqrt{b^{3} - 2ab + a^{2}}]

行列・場合わけ/書き方

全体的に TeX の書き方をネットで調べてはてなブログ用の書き方というところをそのまままねても表示されないなぁと悩んでいたら、Markdown 記法でやっているからみたいでした。みたままとかでやれば良いらしいのですが、今更変えられないので Markdown で表示できる方法を模索します。

<pre style="border: none;">[tex: \displaystyle
\begin{pmatrix}
a & b & y\\
c & d & x \\
c & abc & g
\end{pmatrix} \; + \;
\begin{pmatrix}
2a & b & y\\
c & d & 4x\\
c & x & f
\end{pmatrix}]</pre>
<pre style="border: none;">[tex: \begin{array}{ll}
0 & (x \lt 0) \\
1 & (x \gt 0)
\end{array}]</pre>

行列や場合わけは機械学習の分野でも頻出なので書けるようにしておかないと話が進みません。なぜか上の書き方を後に載せると TeX が変換されないので順番を逆にしてます。ここだけ。

Markdown で書くと &amp; と変換されてしまうので、たぶんバグなんですけど運営はバグをなかなか認めないし、直す気もなさそうなことが多いので自己解決が基本です。

<pre> タグで [tex: ] を囲めば良いことは探した結果見つけました。ただ、これだと数式の周りを四角い罫線で囲われてしまいます。全部そうなれば別に良いのですが、行列とかだけだと統一感がありません。

仕方なく <pre style="border: none"> で消せば良いか、と。はてなブログのデザインCSSに書くと普通のコードとかで囲む方まで消えてしまうので、使うところで消すのがテクニックです。

行列・場合わけ/表示

上の書き方は以下のようになります。行列はこんな感じです。

 \displaystyle
\begin{pmatrix}
a & b & y\\
c & d & x \\
c & abc & g
\end{pmatrix} \; + \;
\begin{pmatrix}
2a & b & y\\
c & d & 4x\\
c & x & f
\end{pmatrix}

続けて場合わけです。

 \begin{array}{ll}
0 & (x \lt 0) \\
1 & (x \gt 0)
\end{array}

まとめ

  • 今後の人工知能関係の記事にご期待ください。
  • はてなブログ(Markdown記法)での TeX の書き方は少しクセがあるので当記事を参考にしてください。