Pythonスキルの習得

ディープラーニングとは ? イメージでわかりやすく仕組みを解説

ディープラーニングとは ? イメージでわかりやすく仕組みを解説

世間で騒がれているけど、ディープラーニングって何?

AI(人工知能)とどう違うの!?

筆者

今回は、「とある女性がプロポーズされている」シーンを使って、分かりやすく解説してみます。

(まともな解説になるのか、すごく不安・・)

こんにちは、Zero-Cheeseです。

最近の技術進歩は恐ろしい速度で進んでおり、少し前では、不可能だった事が次々と実現できる世の中になっています。

今回取り上げる「ディープラーニング」もその一例で、従来の技術では不可能とされた事を、次々と可能にしています。

本記事は、

  • 最初に、「ディープラーニング」の何か? 何が凄いのか? を説明してから
  • 分かり易く、「ディープラーニング」の仕組みを解説

の構成でご紹介していきます。

一応、この記事を書いている筆者は、日本ディープラーニング協会のE資格を有しているので、多分まともな記事になっていると思われます。

ディープラーニングとは?

ディープラーニングとは何か?

ディープラーニングとは、人の脳の構造(ニューロンの構造)をヒントにして、それをモデル化して、コンピュータに実装したものです。(詳細は、後ほど記しています。)

ディープラーニングのイメージ

世間で言われている、AIと機械学習、ディープラーニングの関係は以下の図の通りになります。

AIというと、機械学習、ディープラーニングを含んだ、広い概念を指している状況です。

AIという言葉の定義は、専門家の間でもバラバラで、完全に意味が決まっていない状況です。

ディープラーニングの何が凄いのか?

ディープラーニングは、今まで不可能とされた問題を解決する事に成功しました。

詳細は別途記事を書きますが、ここでは簡単にご紹介します。

視覚による物体認識

人の作業を機械に置き換えるというのは、産業革命以来、人類が取り組んできたものです。

しかし機械の、視覚による物体認識だけはどうしても低レベルのままで、商業的にあまり使い物にはなりませんでした。

(機械の、視覚による物体認識というのは、カメラで撮った画像を、画像処理して認識するという意味で使っています。)

よって今までの機械は、いわゆる「目が無い」状態で作業させるしかありませんでした。

「目が無い」状態で作業という言葉を補足します。

例えば

  • 工場の産業用ロボットは、「物」がある特定の場所に置かれている事が保証されているので、それを運ぶ事ができたり
  • 組み立てラインも、それぞれの部品が、初期位置を厳密に決めているので、組み立てる事ができたり
  • 監視カメラも、所詮は人の目によってチェックしていたり

と、「目が不要」な状況を前提とした作業に、機械を従事させていました。

それ故、機械に目を持たせるというのは、人類としても未開拓の領域で、世の中を変えられるだけのパワーを持っています。

例えば、

  • 監視カメラによる、犯罪自動チェック
  • 自動掃除マシン(ルンバだけでなく、片付けも含めて)
  • コンビニによる、自動支払レジ
  • 自動車の自動運転
  • 医療用診断の自動判定装置(撮像したX線にチェック)

等々が挙げられます。

つまり、人を必要としない、完全自動化の分野が確実に広がります。

少し前のSFみたいな世界が、やって来ます。

ディープラーニングにより、「機械に目を持たせる」という技術が、可能になりつつあります。(2021年現在、一部は実現してきました。)

ディープラーニングによる物体認識がどれだけ凄いのかを示す例として、ILSVRCという、2010年から始まった大規模画像認識の競技会があります。

つっこみ

ILSVRC?? 難しい言葉がでてきた。

コンテストみたいなもの」と思ってもらえれば大丈夫です。

その中で、クラス分類タスクというものがあり、(見せられた画像に何が写っているか?というテストです。)その分野においては、人間を超えた成績を既に叩き出しています。

(画像認識においては、「人間を超える事は不可能」と思われて来ました。)

下記グラフは、「画像の分類タスク」のエラー推移を年別で示したものです。

ディープラーニングが登場してから、急激にエラーが少なくなっており、人間レベルを既に超えいます

文章の意味理解

文章の意味理解に置いても、2018年にGoogleより発表された「Bert」により、特定の評価方法においては、人間を超える性能を叩き出しました。

詳細を記事にすると長くなってしまい、本記事の趣旨と外れてしまうため、別記事にさせて下さい。

イメージで分かる、ディープラーニングの仕組み

ディープラーニングは、多層のニューラルネットワークというもので構成されています。

この仕組を簡単に分かるよう、たとえ話を使って解説していきたいと思います。

とある女性が、プロポースされるケースを使って、仕組みを解説

物語の前提

とある女性が、男性2人から、「プロポーズ」を受けていました。

この女性は、「男性A、Bとの結婚、どうしよう?」と悩んでいました。

イラスト by 筆者

無意識レベルになると思いますが、このケースの場合、女性が男性A、Bを評価してる事になります。

(男性、へのへのもへじですが・・  下書きとして「へのへのもへじ」を描いてみたら、メインキャラと脇キャラがはっきりして、逆にいいかな?と思って本採用に・・)

結婚するかどうかの判断

「結婚するかどうか、どのようにして判断するか」を考えてみたいと思います。

話を簡単にするために、男性の評価因子は

  • 貯金
  • 能力
  • 容姿
  • 年齢
  • フィーリング(女性との)

の5つしかない世界を考えてみます。

(男性のみなさま、すいません。話を簡略化したかっただけなんです。

男性には、もっとたくさんの、素晴らしい点があります。はい・・・)

Aさん、Bさんを評価してみる

ここでは、各要因 10点満点の評価方法で考えてみます。

例えば、この女性は、下図のような評価をしたとします。

これだけ見ると、合計評価は、Aさんは単純合計の33点、Bさん29点という事で、「Aさんの勝ち」となります。

どの因子が女性にとって、重要なのかを考えてみる。

合計評価として、「単純な足し算での評価はおかしい」と思われた方も多いと思われます。

なぜなら、結婚の条件に「私は、相手とのフィーリングを大切にしたい!!」とか、重要視しているポイントがあるからです。

よって、各因子の重要度を表現してみました。(これは人によって異なるはずですが、一例として下記のようにしました。)

つっこみ

ほぼ、お金に全振りじゃん・・

この際の合計点数の算出方法ですが、「因子の重要度」を、いわゆる「重み」として扱うと、以下のように計算できると思います。

この計算でいくと、Aさん98点、Bさん159点になります。

先程の単純に足し合わせた合計点数に対して、反対の結果となりました。

つっこみ

つまり、どういう事??

結婚するかどうかの判断

新しい計算方法で算出した、合計点数の高いBさんと、この女性は結婚するのでしょうか?

現実では、そうとも限らないと思います。

なぜなら、「どちらとも結婚しない」という選択肢もありえるからです。

これはつまり、「先程の合計点数が160点以上ないと結婚しない」とか、「合計点数○点以上なら結婚する」との判断材料をこの女性が持っている事になります。

つっこみ

つまり?(2回目)

ニューラルネットワークで表現してみると

ディープラーニングはニューラルネットワークから構成されています。

このニューラルネットワークというのは、以下のような模式絵で表現されます。

つっこみ

いきなり、変な図が出てきた・・

今、ちゃんと、説明するよ(汗)

このニューラルネットワークの模式絵に、さきほどのBさんの評価を入れてみると、下記の絵になります。

つまりニューラルネットワークとは

  • 何かを判断をする回路になっている(この場合、「結婚するかどうか」の判断回路)
  • 左側に判断材料を入れる。(ここではBさんの、「各因子の点数」)
  • 入力側から真ん中の○に向かって伸びている線は、因子の重みを表している。
  • 真ん中の丸は、「関所」になっていて、合計点数が閾値以上になると、右側に出力される。(上図の場合は、130点以上で結婚OK!!となる。)

になります。

学習とは、具体的に何をしているのか?

ディープラーニングは学習というフェーズがあります。

具体的に何をしているのか、引き続きこのたとえ話を使って説明してみたいと思います。

話を簡単にするために、先程のニューラルネットワークは「結婚するかどうか」の判断回路でしたが、「結婚後の幸福度」を判断する回路だったとします。(下図参照)

この場合、上図の真ん中の○の部分は、総合点数を幸福度に変換する処理をするものとします。

(例えば、200点だと「結婚後の幸福度」100%、0点だと「幸福度」 0%とする とかです。)

このモデルを使えば、このBさんは159点で80%の筈ですが、いざ結婚してみると、20%だった事が判明した場合を考えてみます。

つっこみ

どうやって、その点数を出した?

そこは、いいから(汗)

そうすると、さきほどの「ニューラルネットワーク」の判断回路が間違っていた事に他なりません。

つまり、正しく判断するために、「ニューラルネットワーク」の回路修正が必要となります。

1つの考え方として、下記図のように、「各因子の重要度」の点数が間違っていたと考えられ、「各因子の重要度」を修正してみるという手があると思います。

修正後、「貯金」は重要度は2で、「フィーリング」が10だった、とかですね!

つっこみ

・・・・・・・・

(フィーリングで結婚したカップルの離婚率が、一番高かった筈だけど・・)

なぜ、ニューラルネットワークを多段構造にする必要があるのか?

質問犬

多層ニューラルネットワークにすると言ってたど、先程の例は1層しか無いよ!?

多層ニューラルネットワークとは、下記のイメージです。(因子が3つずつの例)

なぜ多層にすると良くなるのか、さきほどのたとえ話を使ってお話してみたいと思います。

例えば、下絵のような女性は、いかがっすか?

イラスト by 筆者
常識的な犬

きっつ〜〜〜

先程の「結婚判断ニューラルネットワーク」で判断しようにも、男性の貯金が分からないと、点数付けができないため、破綻してしまいます。

しかし直接、男性に貯金を聞いてしまうと、「痛い娘」扱いされてしまうので、何とかする必要が発生します。

  • つまり、他の何かの情報で、「貯金」を予測する必要が発生します。

この状況は、多層構造のニューラルネットワークを使うと、解決する事ができます。

その手法とは、

  • 1層目で、貯金を予測して、
  • 2層目の入力に、その予測した貯金を入れる

というものです。

貯金を予測するのに、

  • 持っている車種
  • 普段、身につけている服のブランド
  • 職歴
  • 勤め先(上場企業とか)
  • 学歴(一流大学とか)

等々の情報により、精度高く予想できると思います。(現実でも、みんな、無意識にやっていると思いますが・・・)

その時の、「ニューラルネットワーク」は以下の通りになります。(「貯金」以外の1層目は、省略しています。)

つっこみ

つまり、どういう事?(3回目)

つまり多層にする事で、

  • 基本的な情報をもとに、複雑な情報処理をする事が可能

となります。

今回の例では、「Bさんが持っている車等の情報から、貯金を予想して、最終的に結婚するかどうかの判断をする」という、複雑な情報処理が実行されています。

そして、ディープラーニングとは、多層構造をもつニューラルネットワークを使った機械学習になります。

ディープラーニングと人の脳構造との関係性について

人の脳を構成する神経細胞は、ニューロンと呼ばれており、概念図は以下になります。

  • 青丸部分:他のニューロンから、電気信号が入力される箇所
  • 赤丸部分:他のニューロンへ、電気信号を出力する箇所
イラスト by 筆者

先程まで説明してきた、ニューラルネットワークは、このニューロンの機能を模倣して、数理モデル化したものになります。

入力側の電気信号は、青丸部分(シナプスと呼ばれる)を通して、伝わってきます。

そして、入力側の全信号の合計値がある閾値以上になると、出力(上図の赤色箇所部分)側に信号が出力されるという構造になっています。

そしてこのニューロンも、多層構造になっています。

私は初めてこの構造を知った時、生物の脳もデジタル回路だという事に、びっくりしました。

生物の構造は、アナログ構造だと思い込んでいたからです。

よく考えたら、遺伝子もデジタル情報なので、やっぱりノイズ対策を考えると、デジタルの方が利点があるのでしょうか・・?

雑談

今回、あまりにもくだけた例を使ってしまったので、こんな説明で良かったんだろうか? と思っております。

また分かり易さ優先で解説したため、実際は若干異なる部分もあります。

一例としては、ニューラルネットワークには、「人間には理解しがたい情報」が入力される事が多いです。

ご承知おき下さい。

また本記事では、基本的なニューラルネットワークの構造のみの説明で、当分野に精通している方にとっては、「CNN、RNN、Attention等々は?」と思ったかもしれません。

加えて今回の説明だけでは、ディープラーニングの魅力が、全然伝え切れていないと思っております。

本ブログでも、引き続きディープラーニングの魅力を語っていきたいと思っています。

本記事を書いた後の記事になりますが、

ディープラーニングのフレームワークとして

  • 何を選択するべきか?

を記事にしてみました。

各種データを基に、分析して、まとめました。併せて、どうぞ。

TensorFlow vs PyTorch - 世界での使用状況と特徴比較 - どちらを使用するべき ?
TensorFlow vs PyTorch - 世界での使用状況と特徴比較 - どちらを使用するべき ?深層学習(ディープラーニング)用のライブラリである、TensorFlowとPyTorchの特徴を記しました。その特徴を把握した上で、オススメのライブラリを紹介した記事です。...

それではまた、お会いしましょう。