【Kerasリファレンス】ディープラーニングのレイヤー一覧

2024年8月20日

Keras

初めに

ディープラーニングの各レイヤーを一覧に纏めました。

Kerasのディープラーニングで利用できるレイヤーを纏めました。

※ この記事はディープラーニングおよびKerasの知識がある方向けのリファレンスになります。

Coreレイヤー

Coreレイヤーは、ニューラルネットワークの基本的なビルディングブロックを提供します。これらのレイヤーは、モデルの基盤を構築するために使用され、他の特殊なレイヤーと組み合わせて使用されます。

Dense 全結合ニューラルネットワークレイヤー 全結合ニューラルネットワークレイヤー。すべての入力とすべての出力ノードが接続されます。
Activation 活性化関数を適用 活性化関数を適用します。各入力に対して指定された活性化関数(ReLU, Sigmoid, Tanhなど)を適用します。
Dropout ドロップアウト正則化 ドロップアウト正則化。指定した割合のノードをランダムに無効にし、過学習を防ぎます。
Flatten 入力を1次元にフラット化 入力を1次元にフラット化します。例えば、2D画像データを1Dベクトルに変換します。
Reshape 入力の形状を再構成 入力の形状を再構成します。例えば、1Dベクトルを2D画像データに変換します。
Permute 入力の次元を並べ替え 入力の次元を並べ替えます。次元の順序を変更するために使用されます。
RepeatVector 入力を繰り返して複数のタイムステップにする 入力を繰り返して複数のタイムステップにします。RNNで使用されることが多いです。
Lambda 任意の関数をレイヤーとして適用 任意の関数をレイヤーとして適用します。カスタム関数をネットワークに組み込む際に使用します。

Convolutionalレイヤー

Convolutionalレイヤーは、主に画像データに対して使用され、入力データから特徴を抽出するためのフィルターを適用するレイヤーです。これにより、特定のパターンやエッジを検出することができます。

Conv1D 1次元畳み込みレイヤー 1次元畳み込みレイヤー。時系列データやシーケンスデータに対して適用します。
Conv2D 2次元畳み込みレイヤー 2次元畳み込みレイヤー。画像データに対して適用します。
Conv3D 3次元畳み込みレイヤー 3次元畳み込みレイヤー。動画データや3D画像データに対して適用します。
Conv2DTranspose 2次元転置畳み込みレイヤー(デコンボリューション) 2次元転置畳み込みレイヤー(デコンボリューション)。畳み込みの逆操作を行い、画像のアップサンプリングに使用します。
SeparableConv2D 深さ方向に分離可能な2次元畳み込みレイヤー 深さ方向に分離可能な2次元畳み込みレイヤー。計算効率を高めるために、空間方向の畳み込みと深さ方向の畳み込みを分離します。
DepthwiseConv2D 深さ方向の畳み込みレイヤー 深さ方向の畳み込みレイヤー。各入力チャネルごとに独立して畳み込みを行います。

Poolingレイヤー

Poolingレイヤーは、入力データのサイズを縮小し、計算コストを削減し、特徴の不変性を保つために使用されます。プーリング操作により、モデルは重要な特徴を保持しつつ、データの次元を削減することができます。

MaxPooling1D 1次元最大プーリング 1次元最大プーリング。時系列データのダウンサンプリングに使用します。
MaxPooling2D 2次元最大プーリング 2次元最大プーリング。画像データのダウンサンプリングに使用します。
MaxPooling3D 3次元最大プーリング 3次元最大プーリング。動画データのダウンサンプリングに使用します。
AveragePooling1D 1次元平均プーリング 1次元平均プーリング。時系列データのダウンサンプリングに使用します。
AveragePooling2D 2次元平均プーリング 2次元平均プーリング。画像データのダウンサンプリングに使用します。
AveragePooling3D 3次元平均プーリング 3次元平均プーリング。動画データのダウンサンプリングに使用します。
GlobalMaxPooling1D 1次元グローバル最大プーリング 1次元グローバル最大プーリング。入力全体の最大値を出力します。
GlobalMaxPooling2D 2次元グローバル最大プーリング 2次元グローバル最大プーリング。入力全体の最大値を出力します。
GlobalMaxPooling3D 3次元グローバル最大プーリング 3次元グローバル最大プーリング。入力全体の最大値を出力します。
GlobalAveragePooling1D 1次元グローバル平均プーリング 1次元グローバル平均プーリング。入力全体の平均値を出力します。
GlobalAveragePooling2D 2次元グローバル平均プーリング 2次元グローバル平均プーリング。入力全体の平均値を出力します。
GlobalAveragePooling3D 3次元グローバル平均プーリング 3次元グローバル平均プーリング。入力全体の平均値を出力します。

Locally-connectedレイヤー

Locally-connectedレイヤーは、Convolutionalレイヤーに似ていますが、異なる部分に対して異なる重みを持つフィルターを使用する点が異なります。つまり、畳み込み演算がグローバルにではなく、ローカルな領域ごとに行われます。これにより、畳み込み演算が共有されず、異なる部分に対して独自のパラメータが使用されるため、より柔軟なモデルを構築できます。具体的な使用例として、特定の領域に対して異なる特徴を捉えたい場合や、特定のパターンが画像内の異なる位置で異なる効果を持つ場合などが挙げられます。これにより、局所的な情報に基づいてモデルがより細かい特徴を学習することができます。

LocallyConnected1D 1次元局所接続レイヤー 1次元局所接続レイヤー。フィルターが各場所で独自の重みを持つ畳み込みレイヤー。
LocallyConnected2D 2次元局所接続レイヤー 2次元局所接続レイヤー。フィルターが各場所で独自の重みを持つ畳み込みレイヤー。

Recurrentレイヤー

Recurrentレイヤーは、時系列データやシーケンスデータに対して使用されるレイヤーです。このレイヤーは、時系列的な情報やシーケンス内の依存関係を考慮しながら入力を処理します。

RNN 基底RNNクラス 基底RNNクラス。カスタムRNNセルを使用するための基礎クラス。
SimpleRNN シンプルRNNレイヤー シンプルRNNレイヤー。基本的なリカレントニューラルネットワーク。
GRU ゲート付きリカレントユニットレイヤー ゲート付きリカレントユニットレイヤー。LSTMの計算効率を高めたバージョン。
LSTM 長短期記憶レイヤー 長短期記憶レイヤー。長期依存関係を学習できるRNN。
ConvLSTM2D 2次元畳み込みLSTMレイヤー 2次元畳み込みLSTMレイヤー。空間的なデータの時間的変化を学習します。

Embeddingレイヤー

Embeddingレイヤーは、離散的なカテゴリカルなデータ(例えば、単語やカテゴリのインデックス)を連続的な密なベクトル空間に変換するために使用されます。これにより、モデルがテキストやカテゴリの意味を理解しやすくなります。具体的には、各カテゴリのインデックスを、学習可能な密なベクトルにマッピングします。これにより、類似性や関連性のあるカテゴリは近いベクトル空間内に配置されます。Embeddingレイヤーは、自然言語処理やカテゴリカルデータの処理に幅広く使用されます。

Embedding 埋め込みレイヤー(単語やカテゴリの埋め込み) 埋め込みレイヤー。単語やカテゴリを高次元ベクトルに変換します。

Mergeレイヤー

Mergeレイヤーは、複数の入力を組み合わせて、新しい特徴を生成するために使用されます。これにより、モデルが複数の入力から情報を統合し、より豊かな表現を学習することができます。

Add 要素ごとの和 要素(レイヤー)ごとの和を計算します。
Subtract 要素ごとの差 要素(レイヤー)ごとの差を計算します。
Multiply 要素ごとの積 要素(レイヤー)ごとの積を計算します。
Average 要素ごとの平均 要素(レイヤー)ごとの平均を計算します。
Maximum 要素ごとの最大値 要素(レイヤー)ごとの最大値を計算します。
Minimum 要素ごとの最小値 要素(レイヤー)ごとの最小値を計算します。
Concatenate 次元を結合 次元を結合します。
Dot ドット積 ドット積を計算します。

Normalizationレイヤー

Normalizationレイヤーは、データのスケールを調整し、学習の安定性と速度を向上させるために使用されます。

BatchNormalization バッチ正規化 バッチ正規化。ミニバッチごとに入力を正規化し、学習を安定させます。
LayerNormalization レイヤー正規化 レイヤー正規化。各サンプルごとに入力を正規化します。

Noiseレイヤー

Noiseレイヤーは、モデルの訓練中にランダムノイズをデータに追加するために使用されます。主な目的は、過学習を防ぐことや、モデルの汎化能力を向上させることです。具体的には、入力データにランダムなノイズを付加することで、モデルがデータ内の微小な変化に対してロバストになるようにします。

GaussianNoise ガウス雑音を追加 ガウス雑音を追加します。入力にランダムなガウス雑音を加えます。
GaussianDropout ガウスドロップアウトを追加 ガウスドロップアウトを追加します。入力の一部をガウス雑音でスケーリングします。
AlphaDropout アルファドロップアウトを追加 アルファドロップアウトを追加します。自己正規化ニューラルネットワーク(SNN)で使用されるドロップアウト。

注意機構レイヤー

注意機構レイヤーは、特定の入力データに対して異なる重みを割り当て、重要な情報に焦点を当てるために使用されます。
これにより、モデルが特定の部分に重点を置くことで、より効果的に学習できるようになります。以下に、代表的な注意機構の種類とその説明を示します。

Attention 注意機構 入力シーケンスの特定の部分に焦点を当てます。
AdditiveAttention 加法型注意機構 スコアリング関数に加法モデルを使用します。
MultiHeadAttention 多頭注意機構 複数の注意メカニズムを並行して使用します。

活性化関数(Activation)

活性化関数は、ニューラルネットワークにおいて、ニューロンの出力値を非線形に変換する関数です。ニューラルネットワークは、線形モデルの組み合わせで構成されています。しかし、現実世界のデータは多くの場合非線形であるため、線形モデルだけでは複雑な関係性を表現できません。活性化関数は、この非線形性を導入することで、ニューラルネットワークがより複雑な問題を解けるようにします。kerasでは以下の活性化関数をサポートしています。

relu Rectified Linear Unit 0未満の入力を0にし、それ以外の値はそのまま返します。多くのディープラーニングモデルで標準的に使用されます。
Sigmoid シグモイド 出力を0から1の間に圧縮するために使用されます。主にバイナリ分類に使われます。
Tanh Hyperbolic Tangent 出力を-1から1の間に圧縮します。シグモイドと似ていますが、負の値を考慮する点が異なります。
Softmax ソフトマックス 出力を確率分布として解釈するために使用されます。主に多クラス分類で用いられます。
Leaky ReLU リーキーReLU ReLUと似ていますが、0以下の入力に対しても小さな勾配を持たせます。
ELU Exponential Linear Unit Leaky ReLUの改良版で、0未満の入力に対しても指数関数的な値を返します。
SELU Scaled Exponential Linear Unit 自己正規化ニューラルネットワークで使用され、入力値が標準化された形で出力されるようにスケーリングされます。
swish スウィッシュ Googleが提案した活性化関数で、x * sigmoid(x)という形になります。ReLUよりも優れた性能を示すことがあります。
Softplus ソフトプラス 平滑化されたReLUの一種で、常に正の出力を持つ。

一緒に楽しくAIについて学びましょう。