ゴリゴリの文系がＡＩをほぼ独学した半年




# ゴリゴリの文系（偏差値４０前半）がAIを学んだ半年
どうも、ゴリゴリの文系です。
商業高校卒業したあと、文系学部にいったので、そこらへんの文系とは格が違います。
文系界のサラブレットです。

肝心な数学力ですが、高校で数学Aまで勉強して、大学で数学入門とっただけです。
つまり、戦闘力0.1ぐらいです。

これから勉強する人に向けてポエムをつらつらと書いていきます。

## やってきたこと
実装から始めたい人はある程度参考になるかと。
理論から始めたい人は微積、線形代数、確率統計の基礎を習得してからcouseraに行くのが良いのではないでしょうか。（個人の感想です。）
独学はモチベドリブンでやんないとしんどいので自分でカスタマイズしていってください。

### 0ヶ月目 会社の研修でプログラミングの基礎を習得。
ここでJavaを勉強してそこそこ組めるようになりました。
研修が終わってから2日くらいかけて、pythonの基礎文法等を習得しました。

これ以降は会社で時間を取っていただきつつ勉強してます。
そして、環境構築終わってからは全部独学です。

### 1ヶ月目　とりあえずkeras
とりあえずkerasの本から始めました。

<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4839964262/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4839964262&linkCode=as2&tag=youyoko0e-22&linkId=ca818f68acfe353579dba3783747e931"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4839964262&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=youyoko0e-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=youyoko0e-22&l=am2&o=9&a=4839964262" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

こいつです。
実装するだけならこんなに簡単なのか！っていうのでモチベ爆上がりしましたね。
この本のおかげで、何に何を入れたら何が出てくるぐらいは理解できました。
つまり、よくわかんないけど作れる。みたいな状態。

この本を（わからないところは飛ばし飛ばし）終えてからtensorflow公式のAIチュートリアルをやってました

あとは微分と積分がなんで重要なのかをちらっと勉強してました。

### 2ヶ月目　とりあえずcousera
んで次はこれ。

すこぶる評判の良い[couseraの機械学習](https://www.coursera.org/specializations/machine-learning-introduction)。
無料のオンライン講座です。
これを一カ月で走りました。

本当に良かったですね。
ただ、東大松尾研究室のDL4USの存在を知ってたそっちを受けてたかも(^^;

couseraを受けての感想は、どういう数式がどういう役割を担っているかがわかって良かったっていうのが一番ですね。
「**数式って解かなくていいんだ、意味さえ分かれば**」という気付きを得たのがここ。

### 3～半年 色々
ここから色々なところをつまみ食いし始めます。
実装しながら空き時間でqiitaとかslideshareとか眺めてましたね。
あとは本を読みつつ、動画を見つつ勉強みたいな。
特に良かったやつ厳選して挙げます。

#### 本編

<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4839962251/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4839962251&linkCode=as2&tag=youyoko0e-22&linkId=708acfcbd089556b3b35a990c223bd77"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4839962251&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=youyoko0e-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=youyoko0e-22&l=am2&o=9&a=4839962251" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

この本は単純な構成からニューラルネットを理解しよう！みたいな本です。理論的な理解に集中しやすかった。
だがしかし、英語訳がgoogle翻訳かな？みたいな感じなところがあって本当に残念。
内容は物凄く良いから雰囲気で勉強した。

#### 動画編

数学は動画で勉強。

[TRYの動画授業](https://www.youtube.com/channel/UCcj-cHmS0uD91MLjtdiN89Q)。
YOUTUBEなので無料だしわかりやすい。
高校生向けになので初心に帰れるのも良い。
微分だけ学びました。

[予備校のノリで学ぶシリーズ](https://www.youtube.com/channel/UCqmWJJolqAgjIdLqK3zD1QQ/featured)。
YOUTUBEなので無料。
確率統計、線形代数はここで学んだ。
ボケがおもしろくなくておもしろいので好き。

もちろん、[couseraの機械学習](https://ja.coursera.org/learn/machine-learning)もオススメ。

#### サイト編

[機械学習を始めたくなる！機械学習アルゴリズム解説スライドまとめ](https://freelance.levtech.jp/guide/detail/41/)
これで統計的機械学習？（あってる？）が大体学べるので何回か読み直してた。
もちろん、わからないところ多数。
雰囲気勝負。

[Qiita!](https://qiita.com/)
みんな大好きqiita。優秀な人がわかりやすく説明してくれてたり、わけわかんないこと言ってたりするので好き。
機械学習タグはずっと追いながら気になった記事は読み込んでいた。
良記事あげるとキリがないのでごめんなさい。

[wikipediaの数学記号のページ](https://ja.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6%E8%A8%98%E5%8F%B7%E3%81%AE%E8%A1%A8)
わかんない記号が出てきたらここを参照してました。
論文で出てくるわかんない記号は、論文の中で説明されていることを知れたのもこれのおかげ？

[chainerのチュートリアル](https://tutorials.chainer.org/ja/tutorial.html)
ここで勉強したのは数学のみ。ロードマップ的に使うのも良いよ。
トライとヨビノリである程度勉強したなぁと感じたらこれの数学の章を読み切ればそこそこ網羅的に実力付きます。


### 現在
適当に組んで！って言われたら組めるレベル。
けど、論文渡されてこれ実装して！って言われたら無理ですってレベル。
数式は見ながらある程度理解できる感じ。



### やってきたことを振り返って
今こうやってまとめると凄くストレートに道を歩いてきたかのように見えますが、実際はそんなことなく、何度も壁にぶつかりながら寄り道もしまくって、手探りで這いずり回りながら、やっと道を整備することができた感じです。

最初は数式もコードもわけわかんなかったけど、なんか凄いのが動くから知りたい！っていうのが大きかったかなぁ。

### これからやりたい事
今まで数式ばっかり追ってきたので実装スキルを上げたい。
具体的にはkerasで自作レイヤー、自作損失関数、自作最適化関数辺りの実装。

## これから独学する人へ
まず、独学って大変だけど一生物のスキルであることを理解してほしい。
だってネットがあればなんでも独学できるから。

以下、独学しながら学んだ事をいくつか上げていきます。
~~ひとつしかなかった~~
### 1.わからないところを理解する。
独学で一番まずいのが、なんかよくわからないからモチベ下がったってやつです。
モチベ下がるのは良くないので、なんでわからないのか、どこがわからないのか、というのを理解して対策を打ちましょう。


ワンモア言います。「わからない理由を明確化する」、そして「対策を打つ」。
もう一回いいます。「なんで」わからないのか、どこがわからないのか、そして「対策」。
もう一度いいます。「原因」と、「対策」。

わかんなくて叫びだしたくなったら「**原因**」と「**対策**」っていうのを思い出してください。

原因を見つけるのは２ステップ。
「**どこ**」がわからないのか、どこからわからなくなったのかを調べる。
「**何故**」わからないのかを文章にする。
これだけ。
プログラミングのエラー解決と一緒。

対策は色々。
原因がわかればどの対策を取りたいかが決まる気がする。

特に、数学記号とか数式がわからない時はモチベ下がりやすいので調べてもわかんない時は放っておいて別の勉強しましょう。
無理してもしゃーない。

## 最後に
初めてqiitaに投稿しましたので色々拙い点があると思いますが、お手柔らかに。

テーマがAIというとどうしても数学！数学！みたいになりがちですが、簡単なものを組むだけなら別にそんなに必要ないので気軽にやりましょう。
もちろん、論文読んで最新のNNを実装したいんだ！とかいうのは素晴らしいので一緒に勉強しましょう。

文系の人が希望を持てたら良いな。


読んでいただいてありがとうございました。