ディープラーニングについて勉強を始めてみようと思います。
scikit-learn以外のライブラリに進出だね。
ディープラーニングはニューラルネットワークを多層にしたものでした。ディープラーニングを中心としたライブラリには、色々なライブラリがあるようです。ディープラーニングをどのように勉強していこうか色々考えた結果、まずはライブラリについて調べることになりました。
こんな人のやくにたつかも
・機械学習プログラミングを勉強している人
・ディープラーニングのライブラリをどれにしようか迷っている初学者の人
・機械学習ライブラリについて大枠が知りたい人
どのライブラリで始めるか?
scikit-leranについて振り返り
今まで利用してきたscikit-learnは、機械学習全般のライブラリで、色々な機械学習アルゴリズムが実装されていました。例えばサポートベクターマシン、PCA色々。
機械学習を行う手順も「fit」で訓練、「predict」で予測、「score」で評価と、機能が統一されていて、とても利用しやすいものになっていました。
一方、現代の人工知能技術でとても注目されている「ディープラーニング」に焦点を当てた時、scikit-learn以外のライブラリを利用する必要が出てきました。
scikit-learnでは、ニューラルネットワークの一部である「多層パーセプトロン」までが利用可能となっています。もっともシンプルな形のニューラルネットワークです。
ディープラーニングをするにあたってscikit-learnをもう利用しなくなるか、というとそうではなく、例えば、train_test_splitなどのデータの分割機能や、データの前処理、PCAなど、機械学習を行うための全体をみると、scikit-learnの便利な点を利用しつつ、プログラミングをしていくみたいな雰囲気になりそうです。
scikit-learnは機械学習のベース部分を担ってくれそうだね。
基本あっての応用だね。
有力なディープラーニングのライブラリ
TensorFlow、PyTroch、Chainer(日本製、開発終了)、Caffeといったライブラリがあるようです。いくつかは聞いたことがありましたが、最近、色々な動画などで情報を得ていると、次のライブラリがディープラーニングを学ぶ上で有力なライブラリのようです。(2020/06/14時点の調査)
TensorFlow+Keras
Google社製。TensorFlow.jsなどもあるみたいで、Webやスマホなどの色々なプラットフォームで利用できそうな予感がして、使ってみたいな、と感じてます。また、Kerasと呼ばれるライブラリでscikit-learnのように利用しやすくなるらしいです。
PyTorch
Facebook社製。ディープラーニングのライブラリの中では、比較的新しく、使いやすいとのことで、利用者が増えているらしいです。
最近よく目につくのはそういった背景があるから??
また、Chainerという日本のPFN社製ディープラーニングライブラリは開発終了しましたが、 PFN社はPyTorchを採用していくとのことでした。PFN社はハイパーパラメータ最適化ソフトの「Optuna」を開発している会社です。
Define by runという方式のライブラリで、Pythonでニューラルネットワークの処理自体も記載できるみたいです。
Kerasとは?Kerasの立ち位置
Kerasはもともと、色々なディープラーニングのライブラリをより簡単に利用できるようにするためのライブラリということでした。今は、KerasはTensorFlowの一部としても提供されて、TensorFlow+Kerasで利用するパターンが多いように感じます。(主観)。他にもCNTK、Theanoなどのディープラーニングライブラリに対応しているようです。
Kerasは、色々なディープラーニングのライブラリを同じ手順で構築できるように
今は、TensorFlowの一部として組み込まれているようです。
まとめ:全部やってみたい
結論としては、やってみないとわからないので、「Keras+TensorFlow」と「PyTorch」の両方で試してみようかな、と考えました。
もちろん、今後リアルタイムで新しいライブラリが出現したり、統合されたりすると思いますので、全体をみながら全部のメリットデメリットを把握していくことも大切なのかなと感じています。
次にやること
Keras+TensorFlowで、MNISTという手書き文字分類課題がありますので、それを試してみようと思います。まずはKeras+TensorFlownの構文などを確認しつつ、分類課題を一通りできるようになりたいと思います。
やっとディープラーニング学べる。Kaggleはしばらく保留します・・・