ディープラーニングとはなにか?わかりやすく解説!
こんにちは!
今井(@ima_maru)です。
今回は、現在の機械学習ブームの火付け役である「ディープラーニング」についての記事になります。
「ディープラーニング」という言葉は、技術系に興味がある方もそうでない方も一度は耳にしたことがあるのではないでしょうか。
それほど今人工知能の分野でアツイ技術で社会にも浸透しつつある技術なのです。
そんなディープラーニングについてできるだけわかりやすく説明していきたいと思います。
それでは行きましょう。
ディープラーニングとはなにか?わかりやすく解説!
ディープラーニング(Deep learning, 深層学習)とは、ディープニューラルネットワークを用いた機械学習のことで、人間が判断基準を設定せずAI自身で特徴を抽出し学習していくという特徴を持った技術です。
そんなディープラーニングについて理解するためにいくつか抑えておくべきポイントをまとめましたので、それぞれ詳しく見ていきましょう。
ディープラーニングは機械学習と何が違う?どういう分類なの?
ディープラーニングについて、まず知っておかなければいけないのが、人工知能分野においてどういった役割をしているのか、どういった立ち位置にいるのかというところです。
これを知っていれば「あれ?ディープラーニングって機械学習とどういう関係性なんだっけ?」といった疑問も解消できるでしょう。
ここで押さえておくべきは2点。
- ディープラーニングは、機械学習の手法の1つという関係性がある。
- ディープラーニングは、教師あり学習・教師なし学習・強化学習と組み合わせて使うことが出来る。
このことについては、以下の図でイメージしていただくとわかりやすいでしょう。
機械学習が分からないという方は以下の記事をご覧ください。
ディープラーニングはディープニューラルネットワーク(DNN)を用いる機械学習
次に知るべきは「ディープラーニングって結局何のことを指すの?」ということです。
つまり、ディープラーニングの定義は何かという話です。
先ほど書いた通り、ディープラーニングとはディープニューラルネットワーク(DNN)を用いた機械学習です。
ニューラルネットワークとは「脳の神経細胞の繋がりを模した学習モデル」のことで、その中でも隠れ層(下図参照)があるニューラルネットワークのことをディープニューラルネットワーク(DNN)と呼びます。
ディープラーニングが深層学習と呼ばれるのは、この隠れ層が何層もある学習モデルを扱うためです。
特に、「機械学習」ではなく「ディープラーニング」と強調されて呼ばれる場合は、この隠れ層(中間層)を複数持っている構造を強調したい場合です。
とにかく、この「隠れ層」がめちゃくちゃ重要な役割を果たしていて、これこそがディープラーニングの肝なわけです。
どのような役割を果たしているかというのは後ほど書きますが、深く理解するためにも以下の記事をざっくりと見ておいていただけると良いと思います。
繰り返しになりますが、この「ディープニューラルネットワーク」を用いた機械学習のことをディープラーニングと呼ぶということです。
ディープラーニングはなぜ注目されているのか?
最後に、ディープラーニングがなぜここまで注目されているのかについてお話します。
ディープラーニングが注目されている理由はいくつかありますが、その中でも以下のような要因が大きいのではないでしょうか。
- ディープラーニングはこれまでにない高い精度を叩き出しているから。
- 人間が判断基準を設定せずにAI自身で判断基準を学習していくスタイルが新しいから。
- 人間の脳構造に近い学習モデルを用いることから「本当に人間のような人工知能が完成するのではないか?」というイメージが湧くから。
学習方法や仕組みとしても目を見張るものがあるうえに実用的で高精度となると、注目されるのも納得ですね。
また、なぜ「今」なのかというのも気になりますよね。
実はディープラーニングの考えは結構昔からありました。
今になって注目され始めているのは、コンピュータの性能が格段と上がり、ディープラーニングを現実的に行えるレベルに達したからです。
そのため、研究も活発になり、様々なディープラーニングの手法が確立されてきているのです。
ディープラーニングの仕組みを簡単に紹介
ディープラーニングの概要をざっくりとお話ししたので、次はディープラーニングの仕組みについて簡単にですが触れようと思います。
といっても、ディープラーニングの仕組みはディープニューラルネットワークの仕組みと同じです。
以下の記事に書いてありますが、抜粋して紹介します。(学習については以下の記事を参照ください)
ディープニューラルネットワークは、以下の3STEPで動作しています。
- 入力:値を入力する(画像データであれば各ピクセル値など)
- 伝播:入力層から出力層まで値が処理され伝播していく
- 出力:出力層に来た値が出力値として出力される
ディープラーニングの仕組み①:入力
まず、初めはディープニューラルネットワークへの入力。
画像データであれば、各ピクセルの画素値が入力されたりします。
例えば、白なら255、黒なら0、グレーなら150といったように数値で入力されます。
ディープラーニングの仕組み②:伝播
次は、ネットワーク内の伝播。
図では全結合で一方向に進んでいますが、ものによってはノード間で結合していない部分があったり逆方向に伝播したりと様々です。
重要なのは、前の層の値が処理され次の層に伝わっていくということです。
その処理は1つのノードに注目してみるとわかりやすいです。
難しそうに見えますが、ただそれぞれのノードの値がどれだけ重要かを加味したうえで足し算を行っているだけです。
ディープニューラルネットワークの学習はこの「それぞれのノードの値がどれだけ重要か」というのを表した値、つまりこの図でいう重み\(W\)の値を学習することになります。
ちょっと難しいのが次の処理で、この足し算された値を以下のような活性化関数を用いて再計算します。
例えば、足し算の結果が0.5で活性化関数としてシグモイド関数(ゲイン=3)を使うのであれば、最終的なノードの値は0.82となります。
この活性化関数は、脳神経細胞の発火現象と似ている作用をしています。
簡単に言えば、ある程度のレベルを超えたときに著しく反応するというような性質です。
これを数理モデルであらわそうとするとシグモイド関数などが良くあてはまるのです。
ディープラーニングの仕組み③:出力
最後に出力。
この出力値がAIの最終的な回答になるわけです。
仕組み自体はこんな感じですが、たぶんこれを見ても「どうしてうまく機能しているのか?」ってわかりにくいかと思います。
でもこの説明って結構難しいので、私なりにかみ砕いて説明させてください。
このディープニューラルネットワークがうまく機能する理由は、人間の脳がうまく機能しているのと同じです。
厳密に言えば違うところもいろいろありますが、すでにうまく機能している脳の神経細胞のネットワークを模して作ったのですから、それがうまくいくのも納得できませんか?
「この説明だけじゃ物足りない!」という方のために、数学的に説明しているサイトをいくつか張っておきます。(難しいです)
ディープラーニングが使われている実用例
ディープラーニングは様々な分野・領域で活用されています。
数え上げたらきりがないですが、ここでは有名な活用例についてジャンル別に見ていきます。
画像処理
- 自動運転:人やモノを検知
- 医療分野:人間の目では見つけられない微細ながんの兆候の発見
- 航空宇宙:衛星からの画像データから地上の物体を認識・検出
- 画像検索:テキストデータではなく画像データを用いた検索手法
- 画像生成:GANによる画像の自動生成
- 製造業:商品の検品・異常検知
- 農業:雑草と作物を識別
音声認識・自然言語処理
- 音声認識:Alexaなどのスマートスピーカー・音声検索・YouTube自動字幕
- 機械翻訳:Google翻訳・DeepL翻訳
- 自然言語処理:チャットボット
分析・予測
- 金融分野:株価予測・FX自動売買
- 医療分野:病気の早期発見・新薬発見の頻度向上
- 旅客運送業:Uberタクシーの配車予測
- マーケティング:レコメンデーション・広告
- サイバーセキュリティ:ウイルスや不正アクセスの検知・サーバー異常検知
深層強化学習・ゲームAI
- 将棋:Ponanza
- 囲碁:AlphaGo
ディープラーニングの問題・課題
ディープラーニングの活躍は目を見張るものがありますが、一方で課題も残っています。
ディープラーニングが直面している代表的な問題・課題を見ていきましょう。
ディープラーニングのブラックボックス問題
ディープラーニングの問題・課題として「ディープラーニングのブラックボックス問題」が挙げられます。
これは「人工知能が出した答えがどのような考えのもとで算出されたのか分からない」「結果に対する根拠が説明できない」という問題です。
例えば、以下のようなことがあり得ます。
コンサルタント「新店舗はここにしましょう。AIがここが良いと示してますから。根拠はありませんが。」
クライアント「え...?本当に信じていいの?」
このように、AIが言ってることが「なぜ正しいのか」を説明することが難しいのです。
以前のAIは人間が判断基準を決めてコンピュータに処理させるという手法を取っていました。
そのため「ああ、この基準に引っかかったからこういう結果を出力したのか」などが分かったのです。
しかし、ディープラーニングではAI自身が学習によって判断基準を決め、その判断基準はディープニューラルネットワークの膨大な数の各ノード間の重みの集まりとしてあらわされます。
ノードが5個の隠れ層が3層しかない以下のニューラルネットワークでも、ノード間をつなぐ辺の数は非常に多いことが見て取れるはずです。
これを100ノード×100層などもっと大きくしていった場合、各ノード間の重みが何を示しているかを完全に理解することはできるでしょうか?
現時点ではほぼ不可能です。
ディープラーニングの適用によって、より多くの問題に対して複雑な対応できるようになった一方で、その複雑さが故のブラックボックス化が問題となっているのです。
学習データの不足
ディープラーニングを用いた教師あり学習では、最低でも万単位といった大量の学習データが必要になります。
犬や猫の画像といったインターネットで簡単に集まりそうなデータなら良いですが、様々な理由によりデータが十分に集められない場合があります。
そういった場合、ディープラーニングの精度は落ちてしまうことが分かっています。
この課題に対しての解決法として、データの水増し技術やデータを入手するためのクラウドソーシングビジネスなどがあります。
エッジ側の性能不足
ディープラーニングは従来の機械学習よりも多くの処理能力を必要とします。
そのため、処理を行うコンピューターにそれ相応の性能がなければ高速で答えを出力することが出来ません。
特に自動運転車といったリアルタイムで判断が必要なデバイスには、この問題が付きまといます。(判断が遅ければ人を轢いてしまいますからね)
社会性や倫理的な問題や責任の所在
ディープラーニングを含め、現在のAI技術では人の心や感情の理解はできません。
そのため、合理的な答えを突き進めるために感情を無視してしまうことがあります。
例えば、Amazonの人材採用AIの女性差別問題やGoogleの顔認識システムの人種差別問題が挙げられます。
また、自動運転においての死亡事故などは責任の所在が誰にあるのかも問題となります。
詳しくは以下の記事が分かりやすいです。
ディープラーニングをPythonで実装
ディープラーニングの仕組み自体は難しいものではありますが、利用することは簡単です。
プログラミング言語「Python」とAI用のフレームワークを用いれば、サクッと実装することが出来ます。
以下に参考になる動画を張っておきますので、興味のある方はぜひ試してみてください。
ディープラーニングを学ぶには?
最後に、ディープラーニングを勉強したいという方のために、ディープラーニングやAI技術を学ぶ方法を紹介します。
プログラミングスクールで学ぶ
学習の予算がある程度ある方はプログラミングスクールで学ぶのが手っ取り早いです。
おすすめは「Aidemy Premium Plan」で、Pythonを使ってAI技術を満遍なく学べます。
YouTubeやブログなどで学ぶ
最近ではYouTubeやブログなどでAI関連の技術を説明しているところが多くあります。
私のおすすめは以下のチャンネルです。
ブログやメディアなら以下が分かりやすいです。
書籍で学ぶ
書籍で学ぶのが得意な方は、書籍で学ぶのも体系的に学べるので良いでしょう。
大学や専門学校で学ぶ
情報系の大学であれば、AIや人工知能に関する授業があると思います。
私の大学では、Pythonのディープラーニング用フレームワークを用いて実際にコードを書きながら学ぶというスタイルでした。
AIエンジニアを目指すのであれば、大学院も視野に入れると良いでしょう。
ディープラーニング|まとめ
ディープラーニングについてできるだけわかりやすく説明したつもりですが、いかがでしたでしょうか。
少しでも参考になったのであれば幸いです。
最後にまとめを書いて終わりとします。
- ディープラーニング(Deep learning, 深層学習)とは
- ディープニューラルネットワーク(DNN)を用いた機械学習のこと
- 人間が判断基準を設定せずAI自身で特徴を抽出し学習していく
- ディープラーニングは、機械学習の手法の1つという関係性がある
- ディープラーニングは、教師あり学習・教師なし学習・強化学習と組み合わせて使うことが出来る
- ニューラルネットワークとは「脳の神経細胞の繋がりを模した学習モデル」
- 隠れ層があるニューラルネットワークのことをディープニューラルネットワーク(DNN)と呼ぶ
- なぜ注目されているの?
- ディープラーニングはこれまでにない高い精度を叩き出しているから。
- 人間が判断基準を設定せずにAI自身で判断基準を学習していくスタイルが新しいから。
- 人間の脳構造に近い学習モデルを用いることから「本当に人間のような人工知能が完成するのではないか?」というイメージが湧くから。
- コンピュータの性能が格段と上がり、ディープラーニングを現実的に行えるレベルに達したから
以上「ディープラーニングとはなにか?わかりやすく解説!」でした!
最後までご覧いただきありがとうございます。