ディープ・ニューラル・ネットワーク(DNN)とは、機械学習技術のひとつで、コンピュータを訓練することで、従来のプログラミング技術では非常に困難な作業を可能にする。ニューラルネットワークのアルゴリズムは、人間の脳とその機能にインスパイアされている。人間の心のように、あらかじめ設定されたルールのリストに従うだけでなく、過去の反復や経験に基づいて解決策を予測し、結論を導き出すことによって機能するように設計されている。
ニューラルネットワーク・アーキテクチャとは?
ニューラルネットワークは、他の層から入力を受け、最終的な結果に達するまで出力を生成する複数の層のノードで構成される。ニューラルネットワークは任意の数の隠れ層を持つことができ、ネットワーク内のノードの層が多いほど複雑さが増す。以下にさまざまなニューラルネットワークのアーキテクチャを示す:
- 従来のニューラルネットワークは、通常2層か3層の隠れ層で構成されていた;
- 最大150の隠れ層を持つことができるディープ・ラーニング・ネットワーク;
ニューラルネットワークとディープ・ニューラル・ネットワークの違いは何ですか?
ディープ・ニューラル・ネットワークは、「単純な」ニューラル・システムよりもはるかに複雑なシステムである。ニューラルネットワークはチェスゲームに匹敵し、アルゴリズムに従って行動する。相手の手や行動に応じて、さまざまな戦術が提案される。このニューラルネットワークは、プログラマーが入力したものに限定される:
- チェスの駒はどのように動くのか;
- チェス盤の大きさ;
- 状況によって戦略は異なる;
入力データを超え、過去の経験から学習できるニューラルネットワークがディープニューラルネットワークになる
同じコンピュータ上で、例えばニューラルネットワークを訓練し、それを使って他の人と対戦し、対戦しながら学習させることができる。そこから、ニューラルネットワークがさまざまなプレーヤーから学習できるようになれば、チェスの名手であっても、ディープ・ニューラル・ネットワークに勝つことは難しくなるか、文字通り不可能になるかもしれない。
ディープ・ニューラル・ネットワークは、音声コマンドを認識し、音声を識別し、音やグラフィックを認識し、ニューラルネットワークよりもはるかに多くのことができる。ディープ・ラーニング・ネットワークは、問題を解決するためにアルゴリズムとともに「ビッグデータ」を利用し、これらのディープ・ニューラル・ネットワークは、限られた、あるいは全く人間の入力なしで問題を解決することができる。
ディープ・ニューラル・ネットワークの働きを可視化するには?
ディープ・ニューラル・ネットワークのプロセスは、例を見ることで最もよく理解できる。何十万枚もの画像があり、その中には犬が写っているものもある。
選択肢は2つある。明示的に犬を識別するプログラムを書くか、犬を識別する方法を "学習 "するプログラムを書くかだ。
あなたは不用意に前者をやろうと決めた。
従来のプログラミング技術を使うのは時間がかかるし、難しい。
犬の写真を識別するためには、「if」と「then」を使ってソフトウェア・プログラムを作成し、毛皮やフサフサの耳、尻尾といった犬らしい属性を識別するたびに、犬を見ている可能性が高くなるようにプログラムする。しかし、このような神経システムは多くの面で難しい:
例えば、ピクセルの塊が尻尾に似ていれば、犬を見ている可能性が高まる。ディープ・ニューラル・ネットワークは、犬に似た属性に対応するピクセルのグループを識別する必要がある。それができたとしても、アルゴリズムには問題がある:
- 多くの写真撮影された物体は、特に似たような動物の写真など、犬のような属性をいくつか共有している。ルールを追加する必要がある;
- 属性は存在するが、不明瞭なこともある。アルゴリズムはそれを拾わない;
- 他の属性が存在する場合にのみ、属性が重要視されることもある。より多くの決定ルールが必要になるだろう;
分類は失敗する。これらの特殊なケースに対処するために必要なルールをすべて考案することはおろか、属性の完全なセットを手作業で特定することもできないことに気づく。
あなたは賢明にもあきらめ、後者のアプローチを試すことにした。ニューラルネットワークを使うか、もっといいのはディープニューラルネットワークを使うことだ。
ディープラーニングモデルは、コーディングの時間を節約し、より良い結果をもたらします。
ニューラルネットワークは、このプログラミング手法と脳の働き方が似ていることから、そう名付けられた。
脳と同じように、ニューラルネット・アルゴリズムはニューロンまたはノードのネットワークを使用する。脳と同じように、これらのニューロンは入力を取り込み、出力を生成する個別の機能(小さな機械と言ってもいい)である。これらのノードは層状に配置され、ある層のニューロンの出力が次の層のニューロンの入力となり、ネットワークの外側の層のニューロンが最終結果を生成する。
したがって、ニューロンの層があり、個々のニューロンは、脳と同じように、ごく限られた入力を受け、ごく限られた出力を生成する。ニューロンの最初の層(または入力層)が入力を受け取り、ネットワークのニューロンの最後の層(または出力層)が結果を出力する。
この種のアルゴリズムを「ニューラルネットワーク」と呼ぶのは正確か?
もちろん、人間の脳はニューラルネットワークよりもはるかに複雑で強力だ。このアルゴリズムに「ディープ・ニューラル・ネットワーク」と名付けたのはブランディングのための一撃だったが、この技術で何が達成可能かについて非現実的な期待を抱かせるかもしれない。とはいえ、非常に複雑なニューラルネットワークを使って脳を再構築しようとしている人々がいる。では、ニューラルネットと機械学習技術は、犬の認識問題にどのように役立つのだろうか?
手作業で犬のような属性を定義する代わりに、ディープ・ニューラル・ネットワーク・アルゴリズムを使えば、プログラミングなしで重要な属性を特定し、すべての特殊なケースに対処することができる。
ディープ・ニューラル・ネットワークはどのように機能するのか?
それは次のようなものだ:
入力層の各ニューロンは、画像からビット情報を入力として受け取り、その情報が犬を示唆しているか否かを(0から1の間で)ランダムに重み付けする。重みが低い(0.5未満)場合は、その情報が犬に関連している可能性が低く、重みが高い場合は、その情報が犬に関連している可能性が高いことを意味する。この多層ニューラルネットワークのアプローチはディープラーニングと呼ばれる。ニューラルネットワークとディープラーニングは、コンピュータの理解を達成するための非常に強力な技術である。
ディープ・ニューラル・ネットワークは、脳のニューロンのように振る舞うノードの複数の層で構成される。
ディープ・ニューラル・ネットワークを続けるには、これらのニューロンの重みを入力として他の層のニューロンに与え、そのニューロンもまたランダムに重みを割り当て、ネットワーク内のさらに多くのニューロンに入力として渡す。これは、ニューロンの出力層が二値判定を下すまで続く。渡された重みの平均が0.5より大きければ犬、そうでなければ犬ではない。このような多層のノード間の接続とニューロンの活性化が、ディープ・ニューラル・ネットワーク・アプリケーションに力を与えている。
ディープ・ニューラル・ネットワークは、正しい答えを出したかどうかをどうやって知るのか?
この時点で関連する疑問は、ディープ・ニューラル・ネットワークが正しく推測したかどうか、そして正しく推測した場合、あるいは正しく推測しなかった場合はどうなるのか?また、ニューラルネットワークはどのようにして正しく推測したかどうかを知るのか?
それがわかる方法のひとつは、すべての写真に犬が写っているかどうかによって「犬」または「犬ではない」というラベルをつけるという、非常に時間のかかる分類作業を行った場合だ。ニューラルネットは単にラベルを見て、それが犬を正しく識別しているかどうかを判断する。
もちろん、私たちは「犬か犬でないか」という質問が1枚の犬の写真で正しかったかどうかに興味があるわけではない。私たちが興味があるのは、すべての写真についてその質問が正しかったかどうか、少なくとも、その写真に犬が写っているかどうかを正確に判断できたのは何パーセントだったかを調べることである。
ディープ・ニューラル・ネットワークはどのように学習するのか?
ニューラルネットワークは、精度を向上させるために、データを繰り返し学習する。
ネットワーク内の全ニューロンに与えられた重みのセットに対して、ニューラルネットはすべての写真について推測を行い、それがどの程度正確であったかを判断する。何パーセントの割合で正しい結果、つまり犬が写真に写っているときに犬が写っているという結果を得たか、何パーセントの割合で間違った結果、つまり犬が写っていないときに犬が写っているという結果を得たか、あるいは犬が写っているときに犬が写っていないという結果を得たか。AIアルゴリズムがどの程度正確であるかを示すこの指標は、ニューラルネットワークモデルにとって不可欠なフィードバックである。
一度すべての写真に目を通したら、ランダムに(あるいは別の方法で)重みを調整し、それからもう一度、写真に写っているものを推測する作業を行うことができる。2回目の結果が良ければ、前の重みに戻さずにそのままにする。もし2回目の結果が悪ければ、前のウェイトセットに戻し、そのウェイトセットに別の修正を加える。
このプロセスは、ニューラルネットが写真に写った犬を識別できるようになるまで(うまくいけば)続けられる。
アルゴリズムが正確に犬を識別できるようになると、それは収束したと言われる。犬を識別するための「訓練」に成功したのである。
ニューラルネットワークにはどのような種類がありますか?
畳み込みニューラルネットワーク
畳み込みニューラルネットワーク(CNN)は、大規模なデータセットを処理、あるいはそこから学習するように設計された人工知能の一種である。畳み込みニューラルネットワークは、この種のネットワーク、あるいはAI技術全般を表す新しい造語である。
CNNは、深層学習を使って生成タスクだけでなく記述タスクも実行する、強力な画像認識AIツールである。生成タスクの例としては、自動切り抜き、キャプション作成、ビデオ撮影、謄写版、画像オーバーレイなどがある。畳み込みニューラルネットワークには、畳み込み層と呼ばれるものが含まれる。これらの層の各ニューロンは、視覚野のごく一部からの情報のみを処理する。各ニューロンの入力はチェックサムのように並べられ、特徴マップを生成する。
人工ニューラルネットワーク
人工ニューラルネットワーク(ANN)は、ロジスティック回帰として理解することができる、異なる深さまたは層にある多数のパーセプトロンのネットワークである。ANNはしばしばフィードフォワード・ニューラルネットワークと呼ばれますが、これは入力が順方向でのみ処理されるためです。
人工ニューラルネットワークは、万能関数近似器としても知られている。ANNのような純粋なニューラルネットワークアルゴリズムや、ディープラーニングとして実装可能なマッピング関数により、コンピューターはあらゆる関数を学習することができる。普遍的近似が重要である理由の1つは活性化関数である。活性化関数は、入力と出力の間のあらゆる複雑な関係を学習しながら、ネットワークに非線形特性を導入する。これは、異なる種類のネットワークが互いに学習するのを助ける。
ディープ・ニューラル・ネットワークは時間とともにどのように改善されるのか?
このアルゴリズムがやっていることを想像するひとつの方法は、各ニューロンを一種の確信度テストとして想像することだ。犬を識別するためにすべてのif-thenステートメントをコーディングする代わりに、各ニューロンは、写真の中の物体が犬であるという最終的な判断を追加したり削除したりするように調整される。まるで、(犬か犬でないかという)判断が、最終的な判断に寄与する多数のつながった判断に分割されるかのようだ。
もちろん、第一の目的は、可能であれば収束を達成することである。また、これを妥当な時間、できれば短時間で行うことも重要な目的である。
ディープラーニング・アルゴリズムには、人間には理解しにくい学習プロセスがある。
興味深いのは、ニューラルネットワークが写真の中の犬を識別するためのロジックが、人間には理解できないということだ。ディープ・ラーニング・モデルには隠されたロジックがあり、基本的にはブラックボックス化された隠れ層のノードが独自のディープ・ネットワークを作り出している。とはいえ、画像認識タスクのニューラルネットワークの背後にあるロジックを視覚的に表現しようとする試みはいくつかある。その他のケースでは、アルゴリズムが舞台裏で何をしているかを見ることはできず、ディープラーニングの手法は隠されたままだ。
ニューラルネットワークや機械学習は今でこそポピュラーだが、これらのアルゴリズムの多くは50年ほど前に知られていたものだ。
なぜディープ・ニューラル・ネットワークは様々な産業で人気が高まっているのか?
ニューラルネットが発明された当初よりもはるかに普及している主な理由のひとつは、処理能力が以前よりも高速かつ安価になったことだ。高速な収束を達成するためには、処理能力がすべての違いをもたらした。もうひとつの理由は、データがユビキタスになったことで、chatbots のようなデータをビジネスに活用できるアルゴリズムの価値が高まったことである。
高度なニューラルネットワークは、高い処理能力と多くのデータを必要とする
ディープラーニング・ニューラルネットワークは、データとプロセッサを大量に消費する技術であり、プログラマーがプログラミング技術を使って達成することが不可能な結果を達成することができる。ディープラーニング・ニューラルネットワークは、どこにでもあるデータが利用可能で、望ましい結果を分類したりランク付けしたりすることが容易な特定の問題に理想的に適している。
何十万、できれば何百万という犬の写真がなければ、アルゴリズムを訓練することは不可能だ。これらのテクニックは、多くのデータが利用可能な場合にのみ機能する。たった1000枚の写真で、すべての特殊なケースを表現できる可能性は低いのだから。
ニューラルネットワークは、構造化データにも非構造化データにも対応できる。
上記の例で問題となるのは、すべての写真にラベルを付けるのに手作業が多いことだ。アルゴリズムにとっては、構造化された方法でラベル付けされたデータの方が使いやすい。構造化されたデータを使用するニューラルネットワーク機械学習は、教師あり学習と呼ばれる。
タグ付け作業をすべて回避することは可能だろうか?なぜなら、多くの手作業を避けることができるだけでなく、インターネット上で利用可能なデータのほとんどは構造化されていない、つまり注意深くラベル付けされたり構造化されていないからである。
ニューラルネットワークは非構造化データを扱えるのか?
非構造化データを扱う人工ニューラルネットワークや機械学習は、教師なし学習と呼ばれる。もちろん、これは機械学習の聖杯であり、人間が学習する方法に似ている。しかし、機械による教師なし学習であっても、「学習」には人間よりもはるかに多くのデータが必要であり、機械は訓練された例以外の例には容易に外挿できない。
多くのディープラーニング・モデルは、人間の脳のプロセスを再現しようとしている。
この種のアルゴリズムは、おそらく脳を再設計することによって、人間レベルの "理解 "に近づけるところまで発展させることができると考える人々もいる。彼らは、脳の高度なスキャン技術を使って、脳の神経回路網が実際にどのように機能しているのかを知ることができると信じている。これらのデザインやパターンをコピーすることで、人間レベルの知性を再現することができるのだ。
この技術が独創的で非常に有用であることは間違いないが、特に大規模なデータセットが利用可能な場合、このような単純なアルゴリズムが高度に創造的な人間のような知性の基礎になるとは考えにくい。