機械学習

ディープラーニングができることとできないこと!Pythonでの実装例とともに見ていこう!

ディープラーニング できること
ウマたん
ウマたん
本記事では、ディープラーニングができることとできないことについて適宜Pythonでの実装例をはさみながら解説していきます。何でも出来ると思われがちなディープラーニングについてちゃんと理解しておきましょう!

こんにちは!

消費財メーカーでデジタルマーケ&データサイエンティスト的なお仕事をしているウマたん(@statistics1012)です。

最近はどっぷりディープラーニングに浸かっています。

ディープラーニングと聞くとどんなイメージを持ちますか?

なんでもできる魔法のような技術?

いえいえそんなことはありません。

ディープラーニングは何でもできるように世間でもてはやされていますが、もちろん出来ることと出来ないことがあります。

ロボたん
ロボたん
んー、たしかにブラックボックスで中身がよく分からないイメージ・・
ウマたん
ウマたん
そうだよねー!出来ることと出来ないことを明確に分けることでディープラーニングの全貌がクリアになるよ!

少しでもディープラーニングについて多くの人に理解して欲しい!

ということで、この記事ではディープラーニングができることとできないことについてまとめていきます!

ところどころで実装例も一緒に紹介していきますよー!

ディープラーニングとは

まずは、ディープラーニングとは一体何なのか、大枠からとらえていきましょう!

ウマたん
ウマたん
動画でも10分ほどで分かりやすく解説しているのでぜひチェックしてみてください!

ディープラーニングの原型となる「ニューラルネットワーク」の理論は実は1940年~1950年の間に既に確立されているんです。

ロボたん
ロボたん
え!?そんなに昔からあるの!?
ウマたん
ウマたん
そうなんだよー、最新の技術だと思われているんだけど既に理論自体はだいぶ昔から確立されていたんだ!

人間の神経が信号を伝播させていくように、ある入力を次の層へと重み付けをして伝播させていき出力を求めます。

ロボたん
ロボたん
なんで今さら50年以上も前の手法が注目されてるの?
ウマたん
ウマたん
当時の状況では層を積み重ねていくことができなかったんだ!

この層を多層にしていくのがディープラーニングなのですが、当時のマシンパワーでは計算量が膨大過ぎて実現不可能でした。

計算負荷を軽減する誤差逆伝播法(バックプロパゲーション)などの計算手法の登場やマシンパワーの増強により現在に至ります。

そんな計算負荷の問題が解消され深層ニューラルネットワーク(ディープラーニング)が日の目を浴びたのは2006年

このブレークスルーによって再びAIのブームが巻き起こり、第3次AIブームへと突入していくのです。

AIの歴史については以下の記事でまとめていますのでよければご覧ください!

人工知能(AI)とは?ビジネスに活かすためにはどうすればよいのか? こんにちは! ウマたん(@statistics1012)です。 大学院時代は統計科学を専攻しており、現在は消費財メー...

実は、ディープラーニングはアルゴリズム自体は非常にシンプルで昔からある手法なんですねー。

ディープラーニングの詳しくアルゴリズムや仕組みに関しては以下の記事でまとめていますのでチェックしてみてください!

【入門】ディープラーニングとは?仕組みとPythonでの実装を見ていこう! こんにちは! 消費財メーカーでデジタルマーケ&データサイエンティスト的なお仕事をしているウマたん(@statist...

ディープラーニングと機械学習・AIの違いは?

さて、ではそんなディープラーニングと機械学習やAIは何が違うのでしょうか?

結構違いがあやふやで間違った使われ方をしていることもあるのですが、定義は以下のような図のようになっています。

AIと機械学習とディープラーニングの違い

実はAIの中に機械学習があって機械学習の中にディープラーニングがあるという関係なんですねー。

AIというとディープラーニングを思い浮かべるという場合もありますが、本来の定義ではAI=ディープラーニングではないのです。

もちろんAIがディープラーニングを指している文脈もありますので注意が必要です。

機械学習の中には大きく分けて

・教師あり学習 ・教師なし学習 ・強化学習

の3つがありますが、それぞれに属する可能性があるのがディープラーニング。

ディープラーニングは深層学習とも言われるので教師ありなし学習などと並列かと思いきや、別なんですねー。

Deep-learning

教師あり学習・教師なし学習については以下の記事でまとめています。

メモ
教師あり学習と教師なし学習の違いとは? こんにちは! 消費財メーカーでデータサイエンス&デジタルマーケティングっぽいことをやっているウマたん(@statistic...

ディープラーニングと機械学習・AIはごっちゃにされてしまうことが多いので、違いを明確に理解しておきましょう!

以下の記事でディープラーニングと機械学習の違いをより詳しくまとめていますのでぜひチェックしてみてください!

機械学習とディープラーニングの違い
機械学習とディープラーニングの違いを分かりやすく解説!当サイト【統計ラボ】の本記事では、曖昧に認識されがちな機械学習とディープラーニングの違いについて解説していきます。AI/機械学習/ディープラーニングは色々と混同されがちなのですが、違いと共通点についてここでしっかり理解しておきましょう!...

ディープラーニングができることを事例と共に紹介

ディープラーニングの概念や機械学習やAIとの違いが分かったところで、ディープラーニングを用いて実際にどんなことが実現できるのかまとめていきたいと思います!

画像を識別

ディープラーニングと言えば、画像認識!!

犬と猫の画像を大量にインプットさせて学習することで、人間と同程度の識別能力を発揮することができるという例はよく耳にするディープラーニングの定番ですね。

画像のピクセルを特徴量としてインプットさせるので、基本的な機械学習手法の分類問題として解くことも可能です。

ただ、ディープラーニングに畳み込み層と組み合わせたCNN(畳み込みニューラルネットワーク)によって、複雑な画像に対してもより高い精度を出力することが可能になっています。

実際にCNNをPythonで実装してみましょう!

ここで使用するのはMnistという手書き文字のデータセット。 Mnistは「Gradient-based learning applied to document recognition」で用いられたデータセットであり、現在でも多くの論文で用いられています。

Modified National Institute of Standards and Technologyの略であり、0~9の数字が手書き文字として格納されているデータセットです。

学習用に60000枚、検証用に10000枚のデータセットが格納されています。

詳細は省きますが、最終的にテストデータに対して96.96%の精度を算出することができました。

なかなか判別の難しい手書き文字も入っているのでなかなかの精度。

パラメータチューニングを頑張ることで精度を99%くらいまで持っていくことが可能です。

以下の記事で詳しくまとめています。

【入門】ディープラーニングとは?仕組みとPythonでの実装を見ていこう! こんにちは! 消費財メーカーでデジタルマーケ&データサイエンティスト的なお仕事をしているウマたん(@statist...

ちなみに機械学習手法の中でデータ解析コンペでよく使われる勾配ブースティング手法でも同様のMnistのデータを分類させて精度を比較しているのでぜひチェックしてみてください!

Light GBM
Light GBMの仕組みとPythonでの実装を見ていこう!当ブログ【統計ラボ】の本記事では、最強の機械学習手法「Light GBM」についてまとめていきます。Light GBMは決定木と勾配ブースティングを組み合わせた手法で、Xgboostよりも計算負荷が軽い手法として注目を集めています。...
XGboostとは?理論とPythonとRでの実践方法!当ブログ【統計ラボ】の本記事では、機械学習手法の中でも非常に有用で様々なコンペで良く用いられるXgboostについてまとめていきたいと思います。最後にはRで他の機械学習手法と精度比較を行っているのでぜひ参考にしてみてください。...
Catboost
Catboostとは?XgboostやLightGBMとの違いとPythonでの実装方法を見ていこうー!!当ブログ【統計ラボ】の本記事では、XgboostやLightGBMに代わる新たな勾配ブースティング手法「Catboost」について徹底的に解説していき最終的にPythonにてMnistの分類モデルを構築していきます。LightGBMやディープラーニングとの精度差はいかに!?...

結果だけ見ると、

Xgboost>LightGBM>ディープラーニング(CNN)>Catboost

となってます。

どれも非常に高い精度を誇っており、シンプルに実装しているのでもう少しパラメータチューニングをすることで精度の逆転は全然あり得ます。

体感としてはライトに実装するならLightGBM、本気で精度求めるならCNNかなーという感じ。

文脈を読み取る

ディープラーニングを用いて文章を予測したり文脈を読み取ることが可能です。

そしてそのような手法群は専門用語では自然言語処理と言われます。

実は、文脈を読み取ることは過去データの流れから未来のデータを予測することになるので、広義では時系列問題となるんですねー!

そこで登場するのがRecurrent neural network(再帰型ニューラルネットワーク)

RNNと略されて呼ばれます。

今までのディープラーニングでは、時系列要素はなくシンプルにいくつかの同列要素のインプットに対して重みパラメータを変化させて出力を調整します。

RNNでは同一の中間層を用いて再帰的にインプットが行われます。

再帰的という部分がReccurentと言われるゆえんです。

こんなイメージ

rnnの概念

同じレイヤーh1を用いているのがミソです。

なんとなーく、こんなもんなんだなーくらいの理解で大丈夫です。

Google翻訳や音声AIなどにもRNNの概念が用いられています。

テキストであろうが音声であろうが、文脈を読み取る技術にディープラーニングが用いられているんですね。

RNNを用いて時系列問題を解いてみましょう!

使うデータセットはKaggleのホームページが落とせる航空会社の乗客数データ!

1949年から1960年までの月別乗客数がデータとして入っています。

149行2列のシンプルなデータセット。

1変数の時系列データを基に過去のデータから未来の値を予測します。

この時、tflearnというライブラリを使ってRNN(正確にはLSTM)を実装していきます。tflearnはkerasと似たようなライブラリでディープラーニングの実装が感覚的に容易にできます。

実際にモデルを構築していきましょう!

最終的な評価はRMSE(Root Mean Square Error)で算出しています。

RMSEは0.10079201となりました。

それなりに良い予測ができてる!

RNNについては以下の記事で詳しくまとめていますのでチェックしてみてください!

RNNとは?Pythonでの実装方法と一緒に見ていこう!当サイト【統計ラボ】の本記事では、ディープラーニングを時系列にも対応させたRNN(リカレントニューラルネットワーク)について解説していきます。RNNの仕組みや応用場面と一緒にPythonでの実装をしていきます。これからの応用が期待される領域なんですよー!...

自然言語処理では、Googleが2019年に正式にアルゴリズム導入を決めたBERTについても合わせてチェックしておくと理解が深まるでしょう!

Pythonで実際に文章予測を行ってます。

BERTについて解説!日本語モデルを使って予測をしてみようー!当サイト【統計ラボ】の本記事では、Googleが新たにリリースしたBERTについてSEO的観点とデータサイエンス的観点で解説し、日本語モデルを使って実際に文章の予測を行っていきます!BERTはPythonで簡単に実装できるんですよー!ぜひ試してみてくださいね!...

画像→テキスト生成

そんなディープラーニングの画像識別の技術と文脈予測の技術を組み合わせることで、画像から自動的にテキストを生成することが可能です。

neural image caption(引用元:Google-“Show and Tell: A Neural Image Caption Generator“)

これを見るとかならの高精度で画像データを読み取りテキスト変換することが出来ていることが分かります。

ロボたん
ロボたん
わー!ほんとだ!こんなに高精度なのか!ディープラーニングってすごいなー!
ウマたん
ウマたん
すごいでしょー!もうこんなことも出来るようになっているんだよー!

フェイク画像生成

続いて、GAN(敵対的生成ネットワーク)という手法によって存在しない画像を生成することが可能です。

実際に存在しないホテルの部屋の画像を生成したのが以下になります。

GAN

(引用元: Google-“UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS” )

ロボたん
ロボたん
なんだこれはー!!本物にしか見えない!!
ウマたん
ウマたん
まさかこれが実在しないホテルの部屋だとは誰も思わないよねー!

GANでは2つのニューラルネットワークを使います。片方がGenerator、もう片方がDiscriminator。

Generatorが生成した偽物のデータと実際に存在する本物のデータをDiscriminatorに判別させ、 Discriminatorが上手く判別できないようなデータを Generator が生成していきます。

Discriminatorはどんどん判別の難しくなるデータを上手く判別できるようにしていきます。

この学習が進むと最終的にGeneratorが生成される画像は本物にきわめて近くなっているという手法です。

実際の写真にゴッホのタッチを合成することも可能なんです。

ゴッホ ディープラーニング

(引用元:https://github.com/jcjohnson/neural-style)

ロボたん
ロボたん
なんじゃこれ!!こんなこともできるのかー。
ウマたん
ウマたん
人間にできることを超越してきているのが現状なんだ!

最適化

囲碁でAIが人間を負かしたのは記憶に新しいと思います。

そのAIのアルゴリズムに搭載されているのがこの「Deep Q Network」。

強化学習であるQ-Learningにディープラーニングを応用した作りになっています。

強化学習自体は、ゲームのCPUの動きに適応されるなど既に様々な分野で実装されていました。

しかし、強化学習はそもそも学習に時間がかかるため行動パターンが複雑だと解を導くことができません。

囲碁は19×19もの数の交点があり、状態(s)と行動(a)のパターンが膨大です。

そこで登場したのがディープラーニング。

ディープラーニングとQ学習を組み合わせたDeep-Q-networkという手法が開発され、それを基にプロ棋士をも凌駕する人工知能Alpha Goが作られたのです。

強化学習とは?ディープラーニングとの関係性当サイト【統計ラボ】の本記事では、強化学習についてディープラーニングとの関係という観点から見ていきます。教師なし学習・教師あり学習は分かりやすく汎用性が高いのですが、なかなかビジネスの場面で使いにくい強化学習。しかし、今非常に注目を集めているのです。...

ディープラーニングができないこと

ここまででディープラーニングができることについて徹底的にまとめてきましたが、まだまだディープラーニングができないことは多くあります。

現在の延長線上では、ディープラーニングが真の人工知能を実現できるとは思えません。

そのため論点として、ディープラーニングができないことは、

・現在のディープラーニングの延長線上で実現可能だけど現在できていないこと
・現在のディープラーニングの延長線上では実現不可能なこと

の2つに分けて考えた方がいいです。

延長線上で実現可能だけど現在できていないこと

この領域に関してはいろいろとあると思います。

例えば、音声分離の問題がありますねー。

現在音声AIの技術は日々進歩していますが、複数人が話している音声を上手く分離して聞き取ることはほぼ不可能です。

また、自動運転や翻訳などの精度もまだまだ完璧ではありません。

ただここら辺の技術は精度が向上していけば実現するのは時間の問題ですね。

延長線上では実現不可能なこと

現在の延長線上では、ディープラーニングはどう考えても人間以上の知能を得ることはできません。

ある種、過去にデータのあることは見通すことが出来ても過去に事例のないケースはディープラーニングでは予測不可能なんです。

さらにあえて過去の成功を踏襲せず失敗に踏み込むことが大きな成功につながることがあります。

アリの世界でさえ局所的な失敗は大局的な成功につながるんです。

そんな観点から考えると、クリエイティブな職能に関してはどれもディープラーニングでは実現できないでしょう。

例えば、起業家・経営者・クリエイティブディレクターなどなど・・・

そして音楽家・芸術家・政治家などの職能もディープラーニングで実現することは難しいです。

しかし、それらの職能の一部はどんどんディープラーニングで代替されていくでしょうねー!

ディープラーニングを学ぶ方法

さて、ディープラーニングができることとできないことについて見てきましたが、そんなディープラーニングを学ぶにはどうすればよいでしょうか?

まずは、機械学習や統計学そしてPythonの土台が必要ですがそれをクリアしている前提なら・・・

理論は以下の書籍が圧倒的に分かりやすいんでぜひチェック!

目から鱗の内容です。アルゴリズムを1からわかりやすーく教えてくれます。

ディープラーニングをちゃんと理解したいなら必読です。

書籍
ディープラーニングを学習する上でオススメな本と勉強法当サイト【統計ラボ】の本記事では、ディープラーニングを学習するのにオススメな本と勉強法について紹介していきます。ディープラーニングだけ分かっても意味がありません。まずは、データサイエンスの基本である機械学習手法を理解してPythonで実装できるまでになりましょう!...

書籍では、Pythonを使ってディープラーニングのアルゴリズムを0から組み立てていくのですが、実際に使う時はライブラリが多数用意されているのでライブラリを使った実データ分析も一緒に学んでいくとよいでしょう!

ライブラリ実装はオンラインスクールもしくはオンライン動画がおすすめ!

オンラインスクールはいくつかありますが、Techacademy(テックアカデミー)のAIコースを受講してみてパーソナルメンターのクオリティが高かったのでおすすめです!

【徹底解剖】テックアカデミーを3か月受講した体験談と評判をまとめる!当ブログ【統計ラボ】では、様々なプログラミングスクールの中からテックアカデミーのメリット・デメリット・評判について3か月の体験談をもとに赤裸々にレビューしていきます。...

教材のクオリティは高くないので先ほどの書籍「ゼロから作るディープラーニング」と並行して進めるのがオススメです。

また、Udemyのディープラーニングコースもいくつかあるので応用手法についてはUdemyでチェックしてみると良いでしょう!

\30日間返金無料/

Udemy
【体験談】評判の良いUdemyを実際に20コース受けてみてレビュー!当ブログ【統計ラボ】の本記事では、世界最大のオンライン学習プラットフォームであるUdemyのメリット・デメリット・評判・口コミについてまとめていきます!実際にPython関連のコースを20個受講して分かった体験談をもとにお伝えしていきます。...

ディープラーニングができること まとめ

ディープラーニングができることとできないことを徹底的にまとめてきました!

最後にできることについてもう一度まとめておきましょう!

しっかりディープラーニングについて理解しておくことで、これからの時代を生き抜く糧になります!

ロボたん
ロボたん
すごいディープラーニングについての理解が進んだよー!
ウマたん
ウマたん
ディープラーニングの基礎となる機械学習や統計学の知識も忘れずにね!

機械学習や統計学の知識は以下の記事をチェック!

機械学習入門に必要な知識と独学勉強方法をPythonとRの実装と一緒に見ていこう!当サイト【統計ラボ】の本記事では、入門者向けに機械学習についてカンタンにまとめていきます。最終的にはどのように機械学習を学んでいけばよいかも見ていきます。細かい手法の実装もPython/Rを用いておこなっていくので適宜参考にしてみてください。...
メモ
統計学入門に必要な知識と独学勉強方法を簡単に学ぼう!当ブログ【統計ラボ】の本記事では、統計学入門に必要な知識をカンタンにまとめ、それらをどのように効率的に独学で勉強していけばよいかをお話ししていきます。統計学は難しいイメージが少しありますが、学び方をしっかり考えれば大丈夫!...

ディープラーニング実装に必要なPythonに関しては以下の記事で勉強方法をまとめているので合わせてチェックしてみてくださいね!

【独学入門】初心者が3か月でPythonを習得できるようになる勉強法!当ブログ【統計ラボ】の本記事では、Pythonを効率よく独学で習得する勉強法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。...
Pythonを初学者が最短で習得する勉強法

Pythonを使うと様々なことができます。しかしどんなことをやりたいかという明確な目的がないと勉強は捗りません。

Pythonを習得するためのロードマップをまとめましたのでぜひチェックしてみてくださいね!