TECH NOW

システム開発

2024.08.27

ディープラーニング超概要

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

ニューラルネットワークは、人間の脳の神経細胞(ニューロン)の動作を模倣した機械学習のモデルです。複数の入力を受け取り、それらを処理して出力を生成します。これは、大量のデータを使用して、入力から出力への複雑なパターンや関係を学習することができます。

出典:udemyメディア「ニューラルネットワークとは?人工知能の基本を初心者向けに解説!」から

 

ニューラルネットワークは入力層、隠れ層、出力層から構成され、各層のノード(人工ニューロン)が互いに結合しています。

 

出典:TELESCOPE Magazine 連載「人が生み出した人を超える知性」から[図3] 深層学習に用いる「ニューラルネットワーク」の基本構成

ニューロン(ノード)

ニューロンは、ニューラルネットワークの基本的な構成要素です。各ニューロンは、入力を受け取り、それを処理して出力を生成します。これらのニューロンが多数集まり、層(レイヤー)を形成します。

 

層(レイヤー)

ニューラルネットワークは通常、複数の層から構成されています。これらの層は、次の3種類に分類されます。

  • 入力層(Input Layer): ネットワークへのデータ入力を受け取る層です。各ニューロンが1つの入力特徴量に対応します。
  • 隠れ層(Hidden Layers): 入力と出力の間にある層で、ネットワークの中間処理を担当します。隠れ層の数や各層のニューロンの数は、ネットワークの複雑さやパフォーマンスに影響を与えます。
  • 出力層(Output Layer): 最終的な出力を生成する層です。回帰問題の場合は1つの連続値を、分類問題の場合はクラスラベルを出力します。

 

ディープラーニングとは

ディープラーニングは、ニューラルネットワークの中間層(隠れ層)を増やした手法のことを指します。つまり、ニューラルネットワークを多層化して、特徴量を自動的に決定する手法がディープラーニングになります。

 

活性化関数とは

活性化関数とは、ニューラルネットワークの各ノードにおいて、入力の総和から出力を決定するための関数です。非線形な変換を行うことで、ニューラルネットワークの表現力を高める役割を果たします。

活性化関数がなければ、ニューラルネットワークは単なる線形変換の積み重ねになってしまい、複雑な問題に対応できません。

 

活性化関数の1つである「ステップ関数」について

ステップ関数は、入力値が閾値を超えたら1を、そうでなければ0を出力する関数で、人間のニューロンの発火を模倣しています。

しかし、出力が1と0のみであるため情報のロスが大きく、勾配が常に0となるため学習が難しいという欠点があり、実務ではあまり使われません。

 

活性化関数の1つである「シグモイド関数」について

シグモイド関数は、0から1までの連続な値を出力する滑らかな関数です。 しかし、勾配消失問題が起こりやすく、学習が停滞してしまうことがあるため、現在は実務であまり使われていません。

では、実務では活性化関数として何が使われるのでしょうか?

 

ReLU関数

ReLU(Rectified Linear Unit)関数は、入力が0以下なら0を、0より大きければそのままの値を出力する関数です。勾配消失が起こりにくく、計算が簡単なため、現在最も一般的に使われている活性化関数です。

 

恒等関数

恒等関数は、入力をそのまま出力する関数です。主に回帰問題のニューラルネットワークの出力層で使われます。

 

ソフトマックス関数

ソフトマックス関数は、入力を正規化し、合計が1になるように出力します。主に多クラス分類問題のニューラルネットワークの出力層で使われます。

ニューラルネットワークを設計する上で、活性化関数の選定は非常に重要です。活性化関数の選定はニューラルネットワークの性能を大きく左右する重要な要素です。問題の種類やネットワークの構造に応じて、適切な活性化関数を選ぶことが求められます。一般的には、隠れ層にはReLU関数を選びます。出力層には問題に応じた活性化関数を選びます。

 

学習アルゴリズム

ニューラルネットワークの学習には、以下のようなアルゴリズムが使われます。

 

フォワードプロパゲーション

入力データを入力層から順に隠れ層、出力層へと伝播させ、最終的な出力を得る処理です。

 

バックプロパゲーション

出力層で得られた誤差を、出力層から入力層に向かって逆方向に伝播させ、各層の重みを誤差が小さくなるように更新する処理です。誤差を最小化するように重みを調整します。

出典:日経XTREND「【AI基礎講座】ディープラーニングはどうやって学習している?」から

ニューラルネットワークは、これらの手法を用いて与えられたデータから特徴を学習し、未知のデータに対しても柔軟に対応できるようになります。

しかし、どのようなデータに対してもニューラルネットワークが最適とは限りません。

 

構造化データと非構造化データ

データの種類を構造化データと非構造化データの2つに分類します。構造化データと非構造化データは、データの形式や特性によって分類されます。それぞれの例を以下に示します。

 

構造化データの例

構造化データは、定義された形式に従って整理されたデータです。代表的な例として以下のようなものがあります。

  • リレーショナルデータベースのテーブルデータ
    • 顧客情報、商品情報、売上データなど
  • スプレッドシートのデータ
  • POSデータ(バーコード、数量など)

これらのデータは行と列で構成され、各フィールドの意味が明確に定義されています。SQLなどを用いて容易に検索・集計が可能です。

非構造化データの例

非構造化データは、定義された形式を持たず、様々な形式で存在するデータです。代表的な例は以下の通りです。

  • テキストデータ
    • メール、文書、ソーシャルメディアの投稿など
  • 画像・動画データ
  • 音声データ
  • センサーデータ(IoTデバイスからのログなど)

非構造化データと構造化データでは、データの特性が大きく異なるため、適した分析手法も異なります。非構造化データにはディープラーニングが、構造化データには回帰分析などの従来の統計手法が向いています。

 

非構造化データとディープラーニングの親和性

非構造化データは、テキスト、画像、音声など、様々な形式で存在し、予め定義された構造を持ちません。このようなデータから特徴を抽出し、パターンを認識するためには、高度な学習能力が必要です。ディープラーニングは、多層ニューラルネットワークを用いて、データの複雑な特徴を自動的に学習できる手法です。

大量の非構造化データを入力として、その中から重要な特徴を自動的に抽出し、タスクに応じた出力を生成することができます。

 

構造化データと従来の統計手法の親和性

一方、構造化データは、予め定義された構造に従って整理されたデータです。例えば、顧客情報や売上データなどがあります。

このようなデータは、行と列で構成され、各フィールドの意味が明確に定義されているため、SQLなどを用いて容易に検索・集計が可能です。構造化データの分析には、以下のような理由から、回帰分析などの従来の統計手法が適しています。

  • 変数間の関係性を明示的に仮定 構造化データでは、変数間の関係性を線形や非線形などの関数で表現することが可能です。回帰分析では、この関係性を明示的に仮定してモデル化します。
  • データの解釈が容易 回帰分析の結果は、変数の係数として解釈できるため、ドメイン知識を活かしてデータを理解しやすくなります。
  • 計算コストが低い 構造化データは、非構造化データに比べてデータ量が少ないため、従来の統計手法でも十分に分析が可能です。

以上のように、非構造化データにはディープラーニングが、構造化データには回帰分析などの従来の統計手法が適しています。