【入門編】機械学習とディープラーニングの違いを分かりやすく解説する

最近pythonで機械学習系の勉強をしているのですが、そのことを知り合いに話すと「機械学習って何をするものなの?」「機械学習ってなに?」って聞かれることが増え、そういうときに100%納得のいく返しが出来ず、もどかしい気持ちになったので、今回は自分の中で機械学習とは何か?を体系化させたいと思います。

機械学習とディープラーニングはどう違うのか?

たぶん機械学習系の話題で一番肝心なところなのですが、よくあるのが「機械学習とディープラーニングはどう違うのか?」という点ですね。

結論から行くと「機械学習=ディープラーニング」です。そしてもう少し正確に言うと、「ディープラーニングは機械学習の一部」だと言えます。

というのも自分も最初は勘違いしていたのですが、機械学習(マシーンラーニング)はあくまでPC上でプログラミング言語を使い、データから予測モデルを算出する作業です。つまりPCになんらかのデータをインプットをして、アウトプットを得るという作業です。

ここにおいてPCがデータを分析して結果を算出するひな型となるモデル、つまりどうやってデータを分析するのか分析手法が必要がなります。このモデリングの手法が色々あり、それが回帰分析だったり重回帰分析だったりディープラーニングだったりするわけです。

なので、ExcelやRやPythonなどのプログラミング言語を使った回帰分析や重回帰分析、それを少し応用した分類、人間の脳回路を模した分析手法であるニューラルネットワークなども機械学習なのです。

AI・機械学習・ディープラーニングの関係性をまとめると以下の図のようになります。日本のAIの第一人者である東京大学の松尾豊先生が書いた人工知能は人間を超えるか ディープラーニングの先にあるもの 」という本はAIの仕組みとそれによって起こりうる社会変化について分かりやすく解説しているので、AIについて知りたい方には非常にオススメです。

引用元:人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書)

ニューラルネットワークとディープラーニング

そして、ディープラーニング(深層学習)はニューラルネットワークの進化系です。というのも、従来のニューラルネットワークというのは、中間層が2層くらいの簡単なものでした。これはニューラルネットワークの分析に必要な計算量が他の分析よりも遥かに多く、2000年代で一般に販売されてるPCのスペックでは何十層もの中間層のニューラルネットワークを計算するディープラーニングはできませんでした。

なので、ニューラルネットワークというと中間層がスッカスカのものを指していました。そして、中間層がほとんどないので分析しても有効な結果がでず、昔から度々注目されていたもの主流とはなりませんでした。

ですが、ここ数年でデータの計算処理に使用するコンピューターのスペック(主にグラボ)が大幅に向上し、加えてPythonに書かれた「keras」や「tensorflow」といった便利な機械学習ライブラリの登場により、普通の市販のPCでも複雑なニューラルネットワークの計算が可能になりました。

それによりこれまで専門の研究機関とかでしか出来なかったディープラーニングが自分みたいな一般ピーポーでも複雑なニューラルのネットワークの構築、つまりディープラーニングが簡単にできるようになり、それと同時に、従来の技術では不可能だったレベルの分析パフォーマンスを達成できるようになったのです。そのためPythonによるディープラーニングがここ数年盛り上がりを見せているわけです。

ディープラーニングでは、人間の脳神経回路の仕組みを模しているのでモノを区別・認識したり、また、電話、タブレットなどの音声認識においても重要な役割を果たしており、これからさらに主流になっていく分析手法です。

終わり

ディープラーニングはニューラルネットワークと呼ばれる機械学習の分析手法の発展形で機械学習の中級のくらいの分野に位置します。

機械学習はいろいろありますが、理解しにくさで言えば、最上級はおそらく会話データなどの時系列データを分析する際に使うリカレントネットワーク(RNN)と強化学習だと思います。まとめると個人的な機械学習全体の認識としては↓みたいな感じです。

  初級:線形分類(SVC)

  初級:非線形分類(ランダムフォレストなど)

ーーここまでが一般的な機械学習ーー

  中級:深層学習(ディープラーニング)

  上級:強化学習(リカレントネットワークetc)

pythonとかで機械学習を勉強したいと思っている人はこの辺を意識すると、自分は何をしたくてそのために何を勉強する必要があるのかが認識しやすくなり、学習がスムーズに進むと思います。

僕も機械学習・AIを勉強するにあたって何百冊もの参考書を購入して読んできましたが、一定のプログラミングスキルを持っている方はアPythonで機械学習の理論と実践方法を勉強したいのであれば、「Pythonで動かして学ぶ! あたらしい機械学習の教科書」がオススメです。

そして、機械学習の延長にあるAIが社会をどうか変えていくのか、これからAIエンジニアになるのはどうすればいいのかを知りたい人には、以下の「マンガでわかる! 人工知能 AIは人間に何をもたらすのか 」「機械学習エンジニアになりたい人のための本 AIを天職にする 」の2冊がオススメです。

プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で



「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」

「エンジニアとして若いうちから高収入を得たい」



という強い気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする

   侍エンジニア塾       
侍エンジニアの無料体験レッスンを予約する -->