社畜エンジニア発掘戦線

駆けだしAIエンジニア

PYTHONISTA3を使って機械学習(ディープラーニング)

おつかれさまです。

しばらくの間、どっぷり機械学習ディープラーニング)について勉強していて更新が滞っていました。その基礎の基礎が分かってきたところで忘れないうちにまとめなきゃ!!となり筆をとった次第です。少しブログのテイストもリフレッシュしました。最近アメリカに移住した経緯もあって英語でも書いてたんですが、同じ媒体で2カ国語はやっぱ見にくいな、となり英語は英語で別のブログ媒体を探しています。(「あっ!アイツ諦めやがったぞ!」とか言わないで、、)

さて、機械学習(特にディープラーニング)にフォーカスして話を進めていきたいと思います。あくまで、現時点での私の理解をメモしたものなので多々間違っている部分、極大解釈してる部分はあるのであしからず。何かミスに気づいたらすぐ修正します。

勉強するツール(PYTHONISTA3)

私は基本的にコードを描くときはノートPC(Mac)を使っています。ただ、どっかでかけたときも空いた時間でコード書けたらいいな〜と思っていたんですが、ノートとは言えフラっとPCを持ち運ぶのはけっこう大変(重い)。最近、アメリカに転勤するタイミングもあったのでこれを期にiPadを購入、ちょうどええやんと思い、コードが書けるアプリないかなと探してみると「Pythonista3」というアプリが便利だぞ、とネットでタレコミを発見。

Pythonista 3

Pythonista 3

  • omz:software
  • 仕事効率化
  • ¥1,200

1,200円でやや高いですが、おつりがくるほどのクオリティだそう。Python機械学習やりたかったのでこれぞ運命と感じてポチりました。いろいろネットを見ていると「Stash」なるシェルを導入してハイレベルに使いこなす方法などあるようですが、そんな難しいことは横に置いといて標準機能だけ使って基本的な機械学習の勉強を進めたい思います。

少なくとも、標準機能で「numpy」と「matplotlib」は使えそう、これだけ使えれば機械学習の基礎ぐらいは勉強できます。

numpy:数値計算を効率的に行うための拡張モジュール
matplotlib:numpyのためのグラフ描画ライブラリ
機械学習の概要

機械学習をしたい」と言っても、その道を見失わないためにどんな問題が解決できて、どのような手法でアプローチできるのかを知る必要があります。「機械学習基礎」という部分に着目すると、解決できる問題は大きく「回帰問題」と「分類問題」に大別されるようです。

●回帰問題
たくさんあるプロットデータからいい感じの線をフィッティングさせる。

f:id:sutokun:20190126123335j:plain

●分類問題
グループで固まっているプロットデータをいい感じで分ける。

f:id:sutokun:20190126123402j:plain

説明がいいかげん過ぎますが、とりあえずこんなもんかと理解しておくのが大事かと思います。

次に、「これらの問題にどうアプローチするか」ですが、これがまさに「ディープラーニングでアプローチする」になります。具体的には「ニューラルネットワークを使う」ということになります。

●ニューラルネットワーク
入ってくる情報を処理してアウトプットするための計算プログラム、人間の脳を真似して作られたものらしい

f:id:sutokun:20190126125823j:plain

こちらも説明がいいかげんですが、とりあえずこんなもんかと理解しておくのが大事です。

問題解決のフロー

「回帰問題」、「分類問題」ともニューラルネットワークを使って解く以上、大まかな解決フローがあります。これから具体的な問題にチャレンジするわけですが、このフローが問題解決の指針となります。

- 解決フロー
1. データセット(入力)を用意する
2. ニューラルネットワークを設計する
3. 順伝搬計算を行う
4. 損失(コスト)関数で損失量を計算しておく
5. 損失(コスト)関数を各パラメータで微分する
6. 逆伝搬計算を行う
7. イテレーションを回す
8. 出力をグラフ化して、答え合わせ

f:id:sutokun:20190126132344j:plain

イキナリなんのこっちゃって感じですが、具体的に問題を解き進めながら説明したいと思います。

PYTHONISTA3のクセについて

PYTHONISTA3はとても便利なんですが、何かと制限もあり、使えないライブラリも多いです。その辺の「こうやったら使えた」などのクセをまとめています。


続き(発展問題など)はこちら
shachicode.hatenablog.com


Twitter
世界の社畜 (@sekai_syachiku) | Twitter