【AI・深層学習】ディープラーニング・ニューラルネットワークとは?図解で概要・仕組みを徹底解説

こんにちは、Kosei(@kay_diacc2)です!

ニューラルネットワーク・深層学習(ディープラーニング)初学者向けの記事になります。「深層学習とはそもそも何か?」「ニューラルネットワーク・深層学習の仕組み」「代表的なアルゴリズムと適用事例」について図解を用いて分かりやすく解説します。

目次

深層学習(ディープラーニング)とは

ディープラーニング(Deep Learning)とは、画像分類や音声認識、自然言語処理、その他予測タスクを人間の代わりに実行できるように、コンピューターに学習させる機械学習手法の一つです。

人工知能(AI)、機械学習、ニューラルネットワークの位置付けは上図のように示されます。ディープラーニングは機械学習の中の1つの手法です。さらに言うと、ディープラーニングは機械学習手法の1つであるニューラルネットワークの応用手法とも言えます。このニューラルネットワークはディープラーニングを語る上で避けては通れない概念ですので、後述の「ニューラルネットワーク・ディープラーニングの仕組み」部分で詳しく解説します。

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

ディープラーニングは多様な業界で応用されており、我々の身の回りにも溢れています。例えば上図等の技術とディープラーニングを活用した事例として以下があります。

合わせて読みたい

ディープラーニング・Pythonプログラミングを学ぶ上でおすすめの教材は下記で紹介しています。

ディープラーニング×画像認識

音声認識・自然言語処理

その他機械学習でも取り扱う予測・分類問題

ニューラルネットワーク・ディープラーニングの仕組み

ディープラーニングの根本的な仕組みであるパーセプトロンとニューラルネットワークについて解説します。ディープラーニングの仕組みを理解する上で重要な要素ですのでしっかり抑えましょう!

パーセプトロン

パーセプトロン(perceptron)は1958年に提唱された動物の神経細胞(ニューロン)の発火現象を数理表現したモデルです。パーセプトロンのモデル図をもとにこの数理モデルの理解から始めてみましょう。パーセプトロンは「入力・重み付け・合計・活性化関数・出力」で表現されるのが特徴です。

入力X0~Xnを重みwで重み付けして入力重要度を調整した後、バイアスbを加えた合計値を算出します。続いて、その合計値に活性化関数fを適用して出力yを求めます。活性化関数については後述します。

パーセプトロンは合計と活性化関数部分を省略して上図のような単純モデルで表されることがよくあります。後述するニューラルネットワークでは上図透明な黒丸部分を1つのパーセプトロンとして表現していきます。

活性化関数

活性化関数は入力を重み付けした合計値を別の値に変換する数式であり、ディープラーニングの予測性能に寄与する関数です。活性化関数を用いることで、最終的に柔軟な出力結果を算出できるようになります。

活性化関数はグラフ上で一直線でない非線形関数が用いられるのが特徴です。直近よく用いられる関数はReLU関数です。ReLUを用いる理由はニューラルネットワーク特有の消失問題が起きにくいためです。本記事で消失問題の詳細説明は割愛しますが、現時点で「活性化関数はReLU関数を用いる」と覚えておくと良いでしょう。

ニューラルネットワーク

これまでは1つのパーセプトロンに着目した動作解説を行いました。一方で実際のニューラルネットワークでは、複数パーセプトロンの相互接続により構成されるのが特徴です。つまり、機械学習の文脈におけるニューラルネットワークとは、パーセプトロンを複数組み合わせた数学的モデルを指します。

ニューラルネットワークは入力層出力層に加えて、その間に中間層(隠れ層)を持ちます。ここで、ニューラルネットワークの層を数える際は「入力層を外し、矢印で表現されたエッジのネットワークとノード(同じ層に位置するパーセプトロン群)のセットにつき1層」と数えます。さらに入力層→中間層→出力層のように、各ノードにより相互接続している層を全結合層と呼びます。

ディープニューラルネットワーク

ディープラーニングはニューラルネットワークの中間層を多層化したものを指します。一般的に中間層が3層以上あるとディープラーニングに位置付けられています。

ディープラーニングの特徴として「重みやバイアスといった扱えるパラメータ数の違い」があります。ニューラルネットワークの中間層や中間層におけるノードの数を増やすと、パラメータ数も増やせるため、より複雑な出力結果を扱えるようになります。その結果、全体的な情報処理能力を向上させることができるため、多様なビジネスシーンで応用されています。

ディープラーニングでモデルの性能を向上させることを「最適化する」と言います。実際の現場ディープラーニングモデルをを構築する際は最適化手法についても事前に把握しておきましょう。多様な最適化手法は下記記事で紹介していますため、是非ご覧ください。

Pythonを用いたディープラーニング入門

ここまでニューラルネットワークおよびディープラーニングの理論を解説しました。Pythonなどのプログラミングができる方はこの段階で一度モデルを構築してみるのも良いでしょう。今まで解説した理論のイメージが湧くはずです。

単純パーセプトロン、多層パーセプトロンおよびニューラルネットワークを構築するための解説記事を掲載します。手始めに実践してみましょう!

ディープラーニングの代表的なアルゴリズム

ディープラーニングでは代表的な手法がいくつか存在します。用いるデータやモデルの利用目的に応じて利用に適したアルゴリズムが変わってきます。以下代表的なアルゴリズムを示しました。それぞれの特徴を確認してみましょう。

畳み込みニューラルネットワーク(CNN)

CNNは多次元配列データを扱うことに特化したニューラルネットワークであり、画像認識や動体検知の分野で広く応用されています。

CNNは「畳み込み層」「プーリング層」「全結合層」で構成されるのが特徴です。畳み込み層で画像の特徴を抽出し、プーリング層で特徴データを圧縮します。この操作を繰り返した後、結合層で分類結果を出力します。

Pythonを用いたCNNによる画像認証モデルの作成に興味がある方向けに、こちらの記事を配信しています。簡単に画像認証モデル作成体験ができますため、是非ご覧下さい。

再帰型ニューラルネットワーク(RNN)

RNNは中間層に過去の入力値が再帰するループ構造を持つニューラルネットワークです。この構造により時系列データが持つ「データの順序性」を記録できるようになります。そのため、自然言語処理、音声認識、価格推移や株価予測などの時系列の将来予測分野で広く応用されています。

Long Short Term Memory(LSTM)

上述したRNNには1つ大きな問題があります。それは、多層化されたニューラルネットワーク上では勾配消失問題が発生するため、過去の入力情報が失われやすくなり、学習がうまく進まない事態に陥ってしまうことです。このRNNの課題を解決できるのがLSTMと呼ばれる構造を持つニューラルネットワークです。

LSTMはRNNより「長期的に情報を保持できる」観点で優れています。LSTMには、新しい情報をどれだけ伝播するか調整する「入力ゲート」、過去の情報をどれだけ破棄するか調整する「忘却ゲート」、情報をどれだけ出力するか調整する「出力ゲート」という3つの情報伝播調整ゲートを用いて構成されるのが特徴です。

オートエンコーダー(Autoencoder)

オートエンコーダーは、入力したデータと同じデータを出力させることを目的とした教師なし学習のニューラルネットワークです。オートエンコーダーの特徴は、中間層が入出力層より少ないノードで構成される点であり、これによりデータの次元圧縮、ノイズ除去等の効果を発揮できる魅力的なアルゴリズムです。

一方でオートエンコーダー単体で利用されるケースは少なく、オートエンコーダ+OOといった改良版のアルゴリズムを用いるケースが多いです。例えば、CAE(畳み込みオートエンコーダー)はCNNの特徴を有したオートエンコーダーであり、画像認識技術として用いられます。

敵対的生成ネットワーク(GAN)

GANは深層学習が本来目的とする「予測」に加え、「生成」という要素を加えた教師なし学習のアルゴリズムです。画像データを入力として用いると、あたかも実在しうる画像データを出力できます。

GANのアルゴリズムの特徴は、まず画像入力データ(観測変数)として投入すると特徴(色合い・形状)を認識して抽象度の高い変数(潜在変数)に変換します。そして潜在変数に基づき実在しうる画像データを新たに生成するのです。これらはGANのアルゴリズムに構成された生成器(Generator)と識別器(Discriminator)によって実行されます。

AI・機械学習まとめ

最後までご覧いただきありがとうございました。当サイトでは機械学習・深層学習における理論やPythonを用いた実装方法の解説記事を多数取り扱っております。

【初学者向け】データサイエンス・人工知能(AI)開発のおすすめ学習方法も解説してます。

ディープラーニングを学ぶ上でおすすめの教材はこちらで紹介しています。

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
URLをコピーする
URLをコピーしました!
目次
閉じる