【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について学びましょう。
|