近年、新たな技術革新として話題に上がるAI(人工知能)を支えている技術が「ニューラルネットワーク」です。
しかし、ニューラルネットワークが一体どのようなもので、どのように活用されているのかはあまり知られていません。そこでこの記事では、ニューラルネットワークがどのようなもので、どのように活用されているのかについて、わかりやすく解説していきます。
目次
ニューラルネットワークとは?
ニューラルネットワークとは、人間の脳をモデルにした、パターンを認識するための一連のアルゴリズムです。ニューラルネットワークは、入力データから一定の傾向性を機械的に認識することによって解釈し、入力データにラベルを付けたり、クラスタリングしたりします。
ニューラルネットワークによって認識できるパターンは、画像、音声、テキスト、時系列などで、それらをすべて入力データとして変換しなければなりません。
ニューラルネットワークの基本的な考え方は、高密度に相互接続されたたくさんの脳細胞をコンピュータの中でシミュレート(単純化してある程度忠実にコピー)することで、人間のように物事を学び、パターンを認識し、意思決定を行えるようにすることです。
ニューラルネットワークのすごいところは、明示的に学習するようにプログラムしなくても、脳と同じように勝手に学習してくれることです。
<<あわせて読みたい>>
半導体不足はなぜ起きた?いつまで続く?半導体不足の影響や原因、解消の見込みについて
ニューラルネットワークの構造
ニューラルネットワークには多くの層があります。それぞれの層は特定の機能を果たし、ネットワークが複雑であればあるほど、層の数も多くなります。
最も純粋なニューラルネットワークは、3つの層で構成されています。
- 入力層
- 隠れた層(中間層)
- 出力層
これらの層は「ノード」で構成されており、名前の通り、それぞれの層には目的があります。入力層は、外界からのデータを収集する役割を担っており、入力信号を拾って次の層に転送します。
隠れ層は、計算のバックエンドタスクをすべて実行します。ニューラルネットワークは少なくとも1つの隠れ層を持っており、ここには必要に応じて複数の隠れ層を設けることができます。出力層は、隠れ層の計算の最終結果を伝達します。
他の機械学習アプリケーションと同様に、ニューラルネットワークに特定の問題を与える前に、いくつかの学習データを使ってニューラルネットワークを訓練する必要があります。
<<あわせて読みたい>>
ニューラルネットワークの仕組み
ニューラルネットワークを用いた機械学習アルゴリズムは、通常、入力から何を期待するかを定義する特定のルールをプログラムする必要がありません。
ニューラルネットの学習アルゴリズムは、学習時に提供される多くのラベル付き例(「答え」のあるデータ)を処理することで学習し、この答えを使って、正しい出力を構築するために必要な入力の特性を学びます。
十分な数の例が処理されると、ニューラルネットワークは新しい未経験の入力を処理し始め、正確な結果を返すことができるようになります。プログラムは経験に基づいて学習するため、より多くの例や様々な入力を見れば見るほど、より正確な結果を得ることができます。
ニューラルネットワークという概念を理解するに、次のような例を考えてみてください。ある画像に猫が写っているかどうかを判定するという「単純」な問題を想像してみましょう。これは人間にとっては簡単なことですが、コンピュータに古典的な方法で画像の中の猫を識別させるのは非常に困難です。
画像に写っている猫の姿にはさまざまな可能性がありますが、すべてのシナリオを考慮してコードを書くことはほとんど不可能と言えます。しかし、機械学習、具体的にはニューラルネットワーク技術を用いることで、プログラムは画像内のコンテンツを理解することができるようになるのです。
ニューラルネットワークは、何層もの関数を使って画像をデータポイントとコンピュータが利用できる情報に分解し、処理された多数の例に存在する傾向を特定したり、類似性によって画像を分類したりし始めます。
多くの猫画像の学習例を処理した後、アルゴリズムは、画像に猫が写っているかどうかを判断する際に考慮すべき要素とそれぞれの関係性、重要度に関するモデルを持つようになります。
新しい画像を評価する際、ニューラルネットは、新しい画像に関するデータポイントを、過去の評価結果に基づいたモデルと比較します。そして、いくつかの簡単な統計情報を用いて、モデルとの一致度に基づいて、画像に猫が写っているかどうかを判断するのです。
基本的なニューラルネットワークの仕組み
ニューラルネットワークは、ソフトウェアでプログラムされた人工的なニューロンのネットワークです。
人間の脳をシミュレートしようとしているので、人間の脳のニューロンと同じように、何層もの「ニューロン」を持っています。最初の層のニューロンは、画像、ビデオ、音声、テキストなどの入力を受け取ります。この入力データは、ある層の出力が次の層に入力されるように、すべての層を通過します。
ここでは、犬と猫を認識するように訓練されたニューラルネットワークを例に説明します。ニューロンの第1層は、この画像を明るい部分と暗い部分に分けます。このデータは次の層に送られ、エッジを認識します。
次の層では、エッジの組み合わせで形成された形状を認識しようとします。同様にいくつかの層を経て、最終的には、見せられた画像が犬なのか猫なのかを、学習されたデータに基づいて認識します。
これらのネットワークは非常に複雑で、受け取った入力を分類・認識するために何百万ものパラメータで構成されています。
ニューラルネットワークがなぜこれほどまでに普及したのか?
ニューラルネットワークの技術は、1943年にウォーレン・マカロックとウォルター・ピッツがアルゴリズムに基づいてニューラルネットワークの計算モデルを作ったことに端を発しています。
その後、ニューラルネットワークの構築に必要な膨大な計算資源がまだ存在しなかったため、このアイデアは長い冬眠状態に入っていました。
しかし最近になって、GPU(Graphical Processing Unit)などの高度な計算資源のおかげで、ニューラルネットワークのアイデアが復活しました。
GPUは、これまでゲームのグラフィック処理に使われてきたチップですが、ニューラルネットワークの実行に必要なデータを処理するのにも適していることがわかり、利用が進むに合わせてニューラルネットワークが普及したのです。
ニューラルネットワークは人間の脳とは違う
単純な問題解決のためのニューラルネットワークは、3つの層だけで構成されることもありますが、入力と出力の間に多くの異なる層が存在することもあります。
このようなリッチな構造はディープニューラルネットワーク(DNN)と呼ばれ、通常はより複雑な問題に取り組むために使用されます。
理論的には、DNNはあらゆる種類の入力をあらゆる種類の出力に対応させることができますが、欠点としては、かなり多くの学習が必要になることです。
深くても浅くても、どのように構造化されていても、ニューラルネットワークは実際には脳ではないということを忘れてはなりません。
つまり、ニューラルネットワークによって出てきた出力は、人間の脳による出力(判断)とは異なるものなのです。
<<あわせて読みたい>>
「東ロボくん」育ての親が描くAI時代の未来予想図とは?「読解力」の重要性
ニューラルネットワークの主な種類
オートエンコーダ
オートエンコーダ(autoencoder)はニューラルネットワークの一種で、情報量を小さくした特徴表現を獲得するための技術です。2006 年に Geoffrey Hinton 教授によって提案されました。基本のオートエンコーダは入力層と出力層が同じになるように学習を進めます。
これによって、入力層と出力層の差分を取ることで異常検知などに使えるアルゴリズムです。入力層から隠れ層には情報の圧縮が行われ、隠れ層から出力層へは圧縮された情報を元に戻すといった処理が行われます。一度入力情報を要約して、それを元に戻そうとして出力するので、大事な情報だけが隠れ層に反映されます。
畳み込みニューラルネットワーク(CNN)
畳み込みニューラルネットワーク(Convolutional Neural Network: CNN)は、何段もの深い層を持つニューラルネットワークで、特に画像認識の分野で優れた性能を発揮しているネットワークです。CNNは、主に一般物体認識と呼ばれる画像認識のタスクで優れた性能を持つアルゴリズムとして使われています。
CNNはその名の通り通常のNeural NetworkにConvolutionを追加したものです。ここでは、Convolution、つまり、畳み込みとは一体なんなのか、を理解することが重要です。
CNNは一般的な順伝播型のニューラルネットワークとは違い、全結合層だけでなく畳み込み層(Convolution Layer)とプーリング層(Pooling Layer)から構成されるニューラルネットワークのことです。
一般的なニューラルネットワークでは層状にニューロンを配置し、前後の層に含まれるニューロン同士は網羅的に結線するのが普通です。
しかし、この畳み込みニューラルネットワークでは、ニューロン同士の結合をうまく制限し、なおかつウェイト共有という手法を使うことで、画像の畳み込みに相当するような処理をニューラルネットワークの枠組み内で表現することに成功しました。
また、この畳み込みニューラルネットワークにおいて、もうひとつ大きな存在感を発揮しているのが、「プーリング層」と呼ばれる層の存在です。
畳み込みニューラルネットワークにおいて、「畳み込み層」が画像からの特徴を抽出する役割を果たしているとすると、「プーリング層」はそうした抽出された特徴が、平行移動などによっても影響を受けないようにロバスト性(厳密性)を与える役割を果たします。
たとえば、写真に写った動物が犬か猫かをカテゴリ分類したい場合、犬と猫が正しく識別できることが重要であり、犬が左端に映っているか、右端に映っているかはあまり重要ではありません。
つまり、そうした画像のカテゴリ分類というタスクにはあまり重要でない位置に関する情報を巧妙に削ぎ落とすのが、この「プーリング層」の役割ということです。
リカレントニューラルネットワーク(RNN)
特定の情報について、時間順序を追って取得されたデータは時系列データと呼ばれます。時系列データの典型的なものとしては、年度ごとのA社の売上高、1時間ごとの東京都の降水量、地球上で発生した地震の時刻と場所、震度などの記録といったものが挙げられます。
時系列データを予測するためには、入力もおのおのが独立した入力ではなく「一連の入力データ」として扱い、それぞれに対する一連の出力データが必要です。
単純なニューラルネットワークでは、出力は最後の層からのみ発生するため、一連の入力のおのおのに対して出力を生成することはできません。通常のニューラルネットワークでは、ある層の出力は、次の層の入力に利用されるのみなのです。
しかしRNNでは、ある層の出力は、次の層の入力として利用されるだけでなく、一般的なニューラルネットワークの最後の層のような(中間データではないユーザーが利用可能な)出力としても利用されます。この技術は主に、自然言語処理や音声処理などに用いられており、スマートスピーカーなどに使われている技術です。
<<あわせて読みたい>>
ニューラルネットワークの活用事例
パターンを認識して簡単な判断を行うことができるニューラルネットワークには、さまざまな用途が考えられます。
たとえば飛行機において、ニューラルネットワークを基本的なオートパイロットとして使用することができます。入力ユニットは、コックピットのさまざまな計器から信号を読み取り、出力ユニットは飛行機の制御を適切に変更して、安全なコースを維持します。
他にも、工場では品質管理にニューラルネットワークを使うことができます。たとえば、巨大で複雑な化学プロセスで洗濯用洗剤を製造しているとします。
最終的にできあがった洗剤の色、酸度、大きさなどをさまざまな方法で測定し、その測定値を入力としてニューラルネットワークに与え、そのバッチを受け入れるか拒否するかをニューラルネットワークに判断させることができます。
セキュリティ分野でもニューラルネットワークは活躍しています。たとえば、銀行で1分間に何千件ものクレジットカード取引がコンピュータシステムを通過するとします。そのためには、不正な可能性のある取引を迅速に自動検出する必要がありますが、ニューラルネットワークはそのような用途に最適です。
入力項目は、
- カード所有者が実際にいるか?
- 有効なPIN番号が使用されているか?
- 過去10分以内に、このカードで5回以上の取引が行われたか?
- そのカードは登録されている国とは別の国で使用されているか?
といった具合です。
十分な手がかりがあれば、ニューラルネットワークは疑わしいと思われる取引にフラグを立て、人間のオペレーターがより詳細に調査できるようにします。
これと同じように、銀行はニューラルネットワークを使って、過去のクレジットヒストリー、現在の収入、雇用記録などをもとに、融資をするかどうかを決めることができるのです。
私たちが日常的に行っていることの多くは、パターンを認識して意思決定を行うことであり、ニューラルネットワークは様々な形で私たちを助けるでしょう。
株式市場や天気の予測、敵の航空機や船舶を自動的に識別するレーダースキャンシステムの運用、さらには医師が症状から複雑な病気を診断するのにも役立ちます。
今、あなたのパソコンや携帯電話の中でも、ニューラルネットワークが動いているかもしれません。タッチスクリーン上の手書き文字を認識する携帯電話のアプリを使っている人は、単純なニューラルネットワークを使って、指で書いたマークの特徴(とその順番)から、どの文字を書いているのかを把握しているのかもしれません。
また、音声認識ソフトにもニューラルネットワークが使われているものがあります。他にも、本物のメールとスパムメールを自動的に区別するメールソフトにもニューラルネットワークが使われていますし、ニューラルネットワークは、ある言語から別の言語への翻訳にも有効であることがわかっています。
たとえば、ここ数年のGoogleの自動翻訳では、ある言語の単語(ネットワークの入力)を別の言語の同等の単語(ネットワークの出力)に変換するために、この技術の利用が増えています。
2016年、Googleはニューラル機械翻訳(NMT)と呼ばれるものを使って、文章全体を瞬時に変換し、エラーを55〜85%削減することを発表しています。
<<あわせて読みたい>>
HRテックとは?AIやIOTが企業にもたらす影響や事例をわかりやすく解説
まとめ ニューラルネットワークはさらに発展する
近年のAIへの関心の高まりは、コンピュータの能力の著しい向上に加えて、ニューラルネットワーク技術の開発によるものが大きいでしょう。
それくらい、ニューラルネットワーク技術はAI技術を支える重要な役割を担っているのです。実際、ニューラルネットワークのサイズは2.4年ごとに2倍に増加しており、ますます複雑な問題を解決する技術として実現可能となってきており、年々さらなる発展をみせています。
<<あわせて読みたい>>