素人からの機械学習①_何を使って始めようか | Late Riser

Late Riser

ダメ主婦ミルミルのプログラムと道の駅ドライブとリラックマの日々。
プログラム系は情報提供ではなく個人的メモなので、信憑性薄め。

はい。それでは。
諸々調べた結果、

とりあえず、なにはともあれPython。(未経験)

・・・PHPとPerlじゃアカンですかそうですか。は?VBA?言語じゃねぇよ。

というのも、機械学習系のライブラリが軒並みPythonで組まれてるんですね。
Rという選択肢もあるけど、まだちょっとトレンドとしては弱い。
移り変わりの激しい業界なので、とりあえず長いものに巻かれるのが吉。
うっかりAIやめてもPythonなら活用の道がある。流行ってるし。

次。何で実行するか。蛇繋がりという気持ちの悪さ一択でAnacondaにします。
なんで爬虫類やねん。
(※Pythonは蛇じゃなくてモンティーパイソンなのは知っているのでよろしく。結果的に蛇)

Anaconda は Python ディストリビューションのひとつで、
Python 本体と各種ライブラリに加えて、パッケージマネージャーや各種ユーティリティがひとまとめになっています。
Windowsでも簡単にいれられるよ。mac、Linux版もあるよ。
Home - Anaconda https://www.anaconda.com/

で、機械学習するにあたり、どうせGoogle Cloud Platformを勉強してみたんだから
そらもう機械学習のライブラリはTensorFlow一択だろと。
ただ、TensorFlow難しいらしいのよね。
Googleのサービスでゴリゴリ利用されてるので実績も将来性もあるのはわかってるんだけど!
ということで、TensorFlowを簡単に使えるというKeras(ケラス)も一緒に使ってみます。

Keras:ケラス:TensorFlow難しいので、これをつかうために高水準なニューラルネットワークライブラリ
Tensorflow、CNTK、THEANOの上で動く(※CNTK、THEANOが何かについてはスルー)

ここまで決めたところでたまたま条件に合致する教材が見つかったので採用(Udemy)

あと、使ってる教材↑の都合で下記の基本的なライブラリも利用します。
Numpy:ナムパイ:数値計算を効率的に行うための拡張モジュール

     ベクトル行列を表現、大規模な高水準の数学関数ライブラリ
Scioy:サイパイ:ナムパイをベースにしている。

     数学化学工学ののための数値解析 統計最適化積分線形代数

で、ライブラリですが、TensorFlowの他にも色々あります。
採用にあたっては、分散学習への対応、デバイス(特にGPU)の確認が超重要らしいです。

というのも。
「機械学習=大量のデータで勉強させる」が基本なので、
データの大量処理が必要になります。
分散学習は、クライアント→マスタ→複数ワーカーに分岐させて平行するのが早いし効率的です。
また、対応デバイスはGPU(画像処理用につくられているメッチャすごいCPUみたいな演算処理装置)だとなおいいです。
最近だと、クラウドでもGPUだのGPGPU(GPUの更に強い奴)だのがつかえる(が、金がかかる)ので
どうせならその辺もカバーしてるのを採用しておいたほうがいいのではないかと。

ちなみにTensorFlowは上記に加え、Mobileでも動きます、とのこと。
つまりEdgeTPUのことかな。

EdgeTPUの開発ツールキットほしい…
が、これ始めようと思うと今度はRasberryPieも手を出さなあかん…?死ぬかな。


あと、Colaboratoryも表示ツールとして追々使えればいいなと思っています
https://qiita.com/tomo_makes/items/b3c60b10f7b25a0a5935
Colaboratoryは、無料で使うことができ、ほとんどの主要ブラウザで動作する、設定不要のJupyterノートブック環境です。
Googleが、機械学習の教育、研究用に使われることを目的に、無償提供しています。
クラウドアプリケーションのPython/ 機械学習版で、Pythonのソースコードを対話型で実行できるだけでなく作ったものを共有したり、共同編集したりすることができます。