初心者向けに機械学習とディープラーニングの違いを分かりやすく解説する

スポンサーリンク

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

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

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

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

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

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

というわけで、AI・機械学習・ディープラーニングの関係性をまとめると以下の図のようになります。

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

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

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

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

ですが、ここ数年でPCのスペック(主にグラボ)が大幅に向上し、普通のPCでも複雑なニューラルネットワークの計算が可能になりました。(& kerasやtensorflowといった便利ライブラリーの登場)

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

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

終わり

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

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

  初級:線形分類(SVC)

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

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

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

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

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

僕も機械学習・AIを勉強するにあたって何百冊もの参考書を購入して読んできましたが。まず手始めにpythonで機械学習を勉強するのであれば、「Pythonで動かして学ぶ! あたらしい機械学習の教科書」がオススメです。

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

プログラミングを挫折せず最短で習得する方法


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



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

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

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

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



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



それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」「エンジニアとして若いうちから高収入を得たい」という気持ちから一念発起して侍エンジニアのwebサービスコースに申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解できました。


侍エンジニアでは様々なコースが用意されており、PHPなどを使ってWebサイトやWebアプリを作ってみたい人からPythonでデータサイエンティストやAIエンジニアになりたい人にもおすすめです。(ちなみに現在、侍エンジニアに申し込むと25歳以下の学生の方であれば、受講料が20%offなるので超お得です。)







巷でいわれるように侍エンジニアのようなマンツーマンのプログラミングスクールは値段が少し高いのは事実ですが、その分やる気さえあれば間違いなくプログラミングスキルが身に付くので、僕はいいと思います。プログラミングは大勢で授業を受けるよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶより絶対にモノになります。


最近はオンラインで無料でプログラミングが学べるというようなサイトも確かにありますが、自分のお金を払って勉強した方が、払った分の元を取ろうと必死になれるのでプログラミングの学習効率は絶対に上がります。エンジニアの間では、プログラミングは好きなやつが独学で勉強するものだという風潮がありますが、もうそういうのは時代遅れだと思います。僕の意見としてはプログラミングはプログラミングスクールに通って勉強するべきです。


スポンサーリンク

シェアする

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

フォローする