Deep Learning(深層学習)って難しいですよね。
初めて取りかかったときは、知らない単語ばかりがでてきて、単語同士の関連がわからないので、どの単語から手をつければよいかも判断できないと思います。
よく出てくる単語を並べてみると、以下のようになります。
- 機械学習、Deep Learning(深層学習)、ニューラルネットワーク
- 教師あり学習、機械なし学習、強化学習
- 分類、回帰、クラスタリング、次元削減
- TensorFlow、Chainer、scikit-learn
- Keras、TF-Slim
- CNN、seq2seq、AutoEncoder、RNN、LSTM
- MNIST、CIFAR-10
ここに書いた単語は、似たような文脈で出てくる単語ごとに分類して箇条書きにしました。
この記事では、上記のような単語の意味が理解できるように様々な記事を紹介していくことで、皆さんを分かった気にさせたいと思います。
それでは行ってみましょう!
TensorFlowとは
TensorFlowは、インストールするだけで機械学習で何かができる、というものではありません。
プログラミング言語からTensorFlowを利用すると、機械学習や深層学習を利用したプログラムを簡単に開発できるというライブラリです。
TensorFlowを利用して機械学習のモデルを構築して訓練し、最後に推測をするという流れになっています。
なお、TensorFlowの開発はGitHubで進められており、ソースコードも自由にダウンロードできます。
TensorFlowとは何か?については、以下の記事で説明していますので、よく分からない方は確認してみてくださいね。
Deep Learning(深層学習)とは
Deep Learning(深層学習)は、ニューラルネットワークを利用した機械学習アルゴリズムの一種です。
隠れ層が2層以上のニューラルネットワークを使った機械学習は、層が多い(=深層)ということで特別にDeep Learning(深層学習)と呼ばれています。
※隠れ層が1層のニューラルネットワークは、多層パーセプトロンと呼ばれています。
一方で、SVM(サポートベクターマシン)のようにニューラルネットワークを使わない一般的な機械学習アルゴリズムもあります。
機械学習とDeep Learning(深層学習)の違いについては、以下の記事で説明されていますので、ぜひご覧ください。
機械学習で使われている技術や手法
機械学習のアルゴリズムは多々あり、数が多いゆえに様々な分類方法があります。
上で説明した、一般的な機械学習か、Deep Learning(深層学習)か、という見方もあります。
よりしっかりした分け方では、教師あり学習や教師なし学習、強化学習といったように学習方法で分類することもあります。
さらに、分類、回帰、クラスタリング、次元削減といったアルゴリズムの目的で分類する方法もあります。
アルゴリズムを学習方法(目的)ごとに分類すると、以下の表のようになります。
たとえば、教師あり学習で分類を目的とする場合に使う、一般的な機械学習アルゴリズムにはSVMや単純ベイズ分類器があり、Deep Learning(深層学習)アルゴリズムにはCNNやRNNがあるというように読みます。
学習手法(目的) | 一般的な機械学習アルゴリズム | Deep Learning(深層学習)アルゴリズム |
---|---|---|
教師あり学習(分類) | SVM(サポートベクターマシン)、単純ベイズ分類器、多層パーセプトロン | CNN、RNN |
教師あり学習(回帰) | 確率的勾配降下法 | RNN |
教師なし学習(クラスタリング) | k平均法 | DeepCluster |
教師なし学習(次元削減) | 主成分分析(PCA) | AutoEncoder |
強化学習 | Q学習 | Deep Q-Network |
以下の記事では、「教師あり学習」や「教師なし学習」、「強化学習」についてまとめられていますので、あわせてご覧ください。
参考記事
最後に、侍エンジニアブログで機械学習やTensorFlowについて解説している記事をまとめて紹介します。
ぜひご覧いただき、理解を深めていただければと思います!
機械学習とDeep Learning(深層学習)
機械学習やDeep Learning(深層学習)について説明している記事です。
利用できるライブラリ
Pythonでは、機械学習やDeep Learning(深層学習)で利用できるライブラリが公開されているため、難解なアルゴリズムをざっくり理解するだけで使い始められます。
TensorFlowやscikit-learn、Chainerが有名なライブラリです。
Pythonで利用できるライブラリについては、以下の記事で詳しく説明されていますので、ぜひご覧ください。
TensorFlow
ここでは、特にTensorFlowを扱った記事を紹介しましょう。
TensorFlowを試してみよう
TensorFlowを試してみたいだけなら、Dockerを使うのが簡単でしょう。
GPU搭載のPCにWindows 10がインストールされているなら、以下の記事を参考にTensorFlowをインストールすることをオススメします。
TensorFlowで作成した学習済みモデルをAndroidスマホで活用する場合は、TensorFlow Liteを使います。
AndroidスマホでTensorFlowを利用したアプリを動かしてみたいなら以下の記事をご覧ください。
Raspberry PiにTensorFlowをインストールする方法を説明しています。
TensorFlowで作成した学習済みモデルをサーバーで動かすならTensorFlow Servingを使うと良いでしょう。
TensorFlowはPythonでも使えますし、C++からも使えます。
TensorFlow+αでさらに便利に!
OpenCLを利用すると計算が速くなるかもしれません。
KerasやTF-Slimを使うとモデルを簡潔に記述できます。
実際に学習してみよう
公式チュートリアルの記事を試しに動かしてみる記事や、公式チュートリアルになくても有名なアルゴリズムの情報をまとめた記事もあります。
TensorFlow周辺の知識を増やしておこう
TensorFlowの関連技術はたくさんありますので、TensorFlow周辺の知識も増やしておくと良いでしょう。
まとめ
今回は、機械学習とDeep Learning(深層学習)の違いや、様々なアルゴリズムが存在することを紹介しました。
また、TensorFlowを使うとどのようなことができるのか、ということを理解できるように、様々な記事を紹介しました。
ここで紹介した計算方法(アルゴリズム)を駆使すると、機械があたかも学習して答えを出しているように見せられる、というのが機械学習やDeep Learning(深層学習)の凄いところです。
ここで紹介した記事をひととおり試したら、次は自分が学習させたい内容にあわせて、既存のアルゴリズムから選択しましょう。
また、現在もよりよい学習結果を得られるように新しいアルゴリズムが研究されていますので、必要に応じて新しいアルゴリズムを探して、TensorFlowで実装することに挑戦してみるのもやりがいがありそうですね!
がんばってください!