DL初心者です。Kerasについて調べていったことのメモです。
Kerasとは?
Keras: Deep Learning for humans
Kerasはディープラーニング用のライブラリです。
「Pythonで書かれたオープンソースニューラルネットワークライブラリ」となります。
特徴は?
Tensor Flowの上位で動きます。
比較的ユーザフレンドリーであり、プロトタイピングなどにも適しています。iOS、アンドロイドアプリなどへの組み込みもしやすいようです。
DL用ライブラリとしては「PyTorch」があります。こちらはMETA提供であり、低レベルのAPIなのでKerasよりもプログラムの行数は多くなります。
「Stable Diffusion」なんかは「PyTorch」をベースにしていますね。
どんなことができる?
サンプルページがあるので、どんなことができるかブラウズしやすいです。
そこでは、
・ビデオや画像認識や分類(犬と猫の区分けなど)
・画像調節(暗い画像をあかるくくっきりなど)
・画像からキャプション生成
・類似画像検索
・NeRF(複数の写真画像から3Dモデルを生成など)
・自然言語のテキスト分類
・機械翻訳
・時系列分類
・音声認識
そして今人気の
・画像生成
・テキスト生成
などにも応用可能です。
Keras内のサンプルコードも。
keras/examples at master · keras-team/keras · GitHub
関連ワード
難しいワードについて紹介。以下は、ChatGPTで作られた説明をリライトして記述しています。
ニューラルネットワーク
人間の脳の構造と機能に触発されたコンピュータアルゴリズムの一種。柔軟な構造を持ち、画像認識、音声認識、自然言語処理などでよく使われています。
畳み込みニューラルネットワーク
「畳み込みニューラルネットワーク(CNN: Convolutional Neural Network)」は、画像認識や音声認識などのパターン認識タスクにおいて広く使用されるディープラーニングのアーキテクチャの一つ。
CNNは、データの空間的な構造(例えば、画像のピクセル間の隣接関係)を効果的に捉える能力があり、その特性が画像処理に非常に有効です。
回帰型ニューラルネットワーク
「回帰型ニューラルネットワーク(regression neural network)」は、入力データから連続値の出力を予測するために使用されるニューラルネットワークの一種です。
出力が例えば価格、温度、長さなどの数値であることが特徴です。
ドロップアウト
「ドロップアウト(Dropout)」は、ニューラルネットワークを訓練する際に使用される一般的な正則化手法の一つ。
過学習を防ぎモデルの汎化性能を向上させます。
ランダムにネットワークの一部のニューロンを「ドロップアウト」すなわち無効化するし、ネットワークが特定のニューロン群に過度に依存することを防ぎます。
バッチ正規化
「バッチ正規化(Batch Normalization)」は、ニューラルネットワークの訓練を安定させ、高速化するために広く使用されるテクニックです。
各訓練ステップでミニバッチごとに中間層の活性化(出力)を正規化します。
層の入力を平均0、分散1に正規化することで、内部共変量シフト(訓練中にネットワークの各層の入力分布が変動する問題)を軽減します。
プーリング
「プーリング(Pooling)」は、畳み込みニューラルネットワーク(CNN)において広く使用される操作です。
多次元データのサイズを削減し、計算コストを下げます。具体的には、畳み込み層の出力(特徴マップ)に適用され、特定の領域から一つの代表値を抽出することでデータを圧縮します。
トークナイザー
「トークナイザー(Tokenizer)」は、DL演算がしやすいようテキストデータの前処理をするものです。
1.テキストを単語に分割します。
2.トークン化された単語をそれぞれ一意の整数にマッピングします。出現頻度が高い単語ほど低い番号が割り当てられます。
3.データの長さをそろえるため、短いテキストを指定した長さに拡張し(通常はゼロパディング)、長いテキストを切り詰めます。
シーケンシャル
「シーケンシャル(Sequential)」は、レイヤーを順序立てて直線的に積み重ねる最もシンプルな形式のモデルです。レイヤーをリストのようにモデルに追加するだけで構築が可能となります。
参考: