マインドマップギャラリー ディープラーニングの理論的知識
コンテンツの一部が折りたたまれており、合計 1216 個のモジュールが含まれています。斉藤泰樹氏の 2 冊の著書『ディープラーニング入門: Python に基づく理論と実装』と『高度なディープラーニング: 自然言語処理』著者: [日本語] 斉藤泰樹 翻訳者: Lu Yujie に基づいています。これは、私が今まで読んだ中でディープラーニングを始めるのに最適な本で、李牧著「ハンズオンディープラーニング」を学ぶ前に強くお勧めします。内容は基礎知識を必要とせず、ゼロから学べるので高校生でも理解できます。
2024-02-04 00:57:48 に編集されましたAvatar 3 centers on the Sully family, showcasing the internal rift caused by the sacrifice of their eldest son, and their alliance with other tribes on Pandora against the external conflict of the Ashbringers, who adhere to the philosophy of fire and are allied with humans. It explores the grand themes of family, faith, and survival.
This article discusses the Easter eggs and homages in Zootopia 2 that you may have discovered. The main content includes: character and archetype Easter eggs, cinematic universe crossover Easter eggs, animal ecology and behavior references, symbol and metaphor Easter eggs, social satire and brand allusions, and emotional storylines and sequel foreshadowing.
[Zootopia Character Relationship Chart] The idealistic rabbit police officer Judy and the cynical fox conman Nick form a charmingly contrasting duo, rising from street hustlers to become Zootopia police officers!
Avatar 3 centers on the Sully family, showcasing the internal rift caused by the sacrifice of their eldest son, and their alliance with other tribes on Pandora against the external conflict of the Ashbringers, who adhere to the philosophy of fire and are allied with humans. It explores the grand themes of family, faith, and survival.
This article discusses the Easter eggs and homages in Zootopia 2 that you may have discovered. The main content includes: character and archetype Easter eggs, cinematic universe crossover Easter eggs, animal ecology and behavior references, symbol and metaphor Easter eggs, social satire and brand allusions, and emotional storylines and sequel foreshadowing.
[Zootopia Character Relationship Chart] The idealistic rabbit police officer Judy and the cynical fox conman Nick form a charmingly contrasting duo, rising from street hustlers to become Zootopia police officers!
ディープラーニングの理論的知識
導入
基本概念
ディープラーニング問題は機械学習の問題であり、限られた例からアルゴリズムを通じて一般的なルールを要約し、それを新しい未知のデータに適用することを指します。
従来の機械学習とは異なり、ディープラーニングで使用されるモデルは一般により複雑です。
元の入力から出力ターゲットへのデータ フローは、複数の線形または非線形コンポーネントを通過します。各コンポーネントは情報を処理し、後続のコンポーネントに影響を与えます。
最終的に出力を取得したとき、各コンポーネントがどの程度寄与しているのか正確にはわかりません。この質問は貢献と呼ばれます 割り当ての問題。
貢献配分問題は、クレジット配分問題またはクレジット配分問題とも訳されることがよくあります。
寄与配分問題は非常に重要な問題であり、各コンポーネントのパラメータをどのように学習するかに関係します。
現在、寄与分分布の問題をより適切に解決できるモデルは、人工ニューラル ネットワーク (ANN) です。
ニューラル ネットワークとディープ ラーニングは同等ではありません。ディープ ラーニングでは、ニューラル ネットワーク モデルまたはその他のモデルを使用できます (たとえば、ディープ ビリーフ ネットワークは確率的グラフ モデルです)。
AI
AIの基本概念
スマートコンセプト
自然な知性
意味
人間と一部の動物の力と行動能力を指します。
人間の自然な知性
それは、思考プロセスと精神的活動によって現れる、客観的な世界を理解する人間の総合的な能力です。
知性のさまざまな見方と階層
ビュー
心の理論
知性は思考活動から生まれる
知識閾値理論
知性は適用可能な知識に依存します
進化論
知性は段階的な進化によって獲得できる
階層
インテリジェンスに含まれる特徴的な能力
感知
記憶力と思考力
学習と適応力
行動能力
人工知能の概念
説明する
人工的な方法を使用して機械に知能を実現する
インテリジェントなマシンやシステムを構築し、人工知能をシミュレートおよび拡張する方法を研究する
チューリングテスト
AI研究の基本的な内容
人工知能の主体的立場
自然科学と社会科学の交差点
コア: 思考と知性
基礎科目:数学、思考科学、コンピュータ
脳科学と認知科学との融合研究
知能シミュレーションの手法と技術に関する研究
機械の知覚
ビジョン
聴覚
機械の思考
機械学習
マシンの動作
ドメインの分類
知覚: つまり、外部刺激情報 (視覚や音声など) を知覚して処理する人間の知覚能力をシミュレートします。主な研究分野は音声情報処理やコンピュータビジョンなど。
学習: 人間の学習能力をシミュレートし、主に例から学ぶ方法や環境との対話方法を学習します。主な研究分野には教師あり学習、教師なし学習、強化学習などがあります。
認知: 人間の認知能力をシミュレートします。主な研究分野には、知識表現、自然言語理解、推論、計画、意思決定などが含まれます。
歴史
AI 研究のさまざまな流派
象徴主義
象徴主義。論理主義、心理学派、コンピューター学校とも呼ばれます。人間の知性の機能を解析し、それをコンピュータで実現する。
基本的な仮定
情報は記号を使って表現できる
シンボルは明示的なルール (論理演算など) を通じて操作できます。
人間の認知プロセスは、象徴的な操作プロセスとみなすことができます。人工知能の推論期と知識期では、記号的手法がより人気があり、多くの成果を上げています。
コネクショニズム
コネクショニズムは、生物学派または生理学派としても知られ、認知科学の分野における情報処理方法および理論の一種です。
認知科学の分野では、人間の認知プロセスは情報処理プロセスと見なされます。コネクショニズムは、人間の認知プロセスは、記号的な操作ではなく、多数の単純なニューロンで構成されるニューラル ネットワークにおける情報処理プロセスであると考えています。
したがって、コネクショニストモデルの主な構造は、非線形性、分散性、並列化、ローカルコンピューティング、および適応性の特性を備えた、多数の単純な情報処理ユニットで構成される相互接続されたネットワークです。
行動主義
行動主義は、人工知能はサイバネティクスに由来すると信じています。
深層学習に加えて、機械学習の分野には現在、強化学習という別のエキサイティングなテクノロジーがあります。
エージェント (Agent) がさまざまなアクション (Action) を継続的に実行し、その状態 (State) を変更し、環境 (Enviroment) と対話してさまざまな報酬 (Reward) を取得できるようにするだけで、適切な報酬 (Reward) のルールを設計できます。エージェントは、継続的な試行錯誤を通じて適切な戦略を学習できます。
ニューラルネットワーク
脳の神経ネットワーク
人工ニューラルネットワーク
ニューラルネットワークの開発の歴史
提案されたモデル
1943 年から 1969 年までの期間は、ニューラル ネットワーク開発の最初の絶頂期でした。この期間中、科学者は多くのニューロン モデルと学習ルールを提案しました。
1943 年、心理学者のウォーレン・マカロックと数学者のウォルター・ピッツが初めて理想的な人工ニューラル ネットワークを記述し、単純な論理演算に基づいたコンピューティング メカニズムを構築しました。彼らが提案したニューラルネットワークモデルはMPモデルと呼ばれます。
氷河期
1969 年から 1983 年にかけて、これはニューラル ネットワークの最初の低レベル開発でした。 谷の時代。この時期、ニューラル ネットワークの研究は長年にわたり停滞と衰退の状態にありました。
1969 年、マービン ミンスキーは「パーセプトロン」という本を出版し、ニューラル ネットワークの 2 つの重要な欠陥を指摘しました。1 つ目は、パーセプトロンが XOR ループ問題を処理できないことです。2 つ目は、当時のコンピューターが大規模なデータの処理をサポートできなかったことです。ニューラルネットワークにはコンピューティング能力が必要です。
1974 年にハーバード大学の Paul Webos がバックプロパゲーション アルゴリズム (BP) を発明しましたが、当時はそれに値する注目を集めませんでした。
バックプロパゲーションアルゴリズムが引き起こすルネッサンス
1983年~1995年。逆伝播アルゴリズムは、ニューラル ネットワークへの関心を再燃させています。
カリフォルニア工科大学の物理学者、ジョン ホップフィールドは、ホップフィールド ネットワークと呼ばれる、連想記憶と最適化計算のためのニューラル ネットワークを提案しました。ホップフィールド ネットワークは巡回セールスマン問題に関して当時最高の結果を達成し、センセーションを巻き起こしました。
David Rumelhart と James McClelland は、神経活動のコンピューター シミュレーションへのコネクショニズムの適用とバックプロパゲーション アルゴリズムの再発明について包括的に議論しています。
人気の低下
1995~2006年。サポート ベクター マシンやその他の単純な手法 (線形分類器など) は、機械学習の分野で人気が徐々にニューラル ネットワークを上回っています。
ディープラーニングの台頭
2006年〜現在。多層フィードフォワード ニューラル ネットワークは、層ごとに事前トレーニングし、バックプロパゲーション アルゴリズムを使用して微調整できます。 効果的に学習しましょう。
機械学習
データの前処理
ノイズ除去などのデータ前処理後たとえば、テキストの分類、ストップワードの削除などです。
特徴抽出
生データからいくつかの有効な特徴を抽出します。たとえば、画像分類では、エッジ、スケール不変特徴変換 (SIFT) 特徴などを抽出します。
特徴変換
次元削減や次元拡張など、フィーチャに対して特定の処理を実行します。次元削減には、特徴抽出と特徴選択という 2 つのアプローチが含まれます。一般的に使用される特徴変換手法には、主成分分析 (PCA)、線形判別分析 (線形判別分析) などがあります。
予測する
機械学習の中核部分、関数を通じて予測を行う
学習を示します
機械学習システムの精度を向上させるために、入力情報を有効な特徴量に変換する
効果的な特徴を自動的に学習し、最終的な機械学習モデルのパフォーマンスを向上できるアルゴリズムがあれば、この種の学習を表現学習と呼ぶことができます。
表示方法
地元の代表者
色を表現する 1 つの方法は、異なる色に異なる名前を付けることです。
次元が高いため、異なる色の類似度は 0 です。
分散表現
色を表すRGB値
適切な高レベルの意味表現 (一般に分散表現) を学習するには、通常、低レベルの特徴から開始し、それを取得するために複数の非線形変換ステップを経る必要があります。
ディープラーニング
ステップ
寄付金分配問題
「浅い学習」とは異なり、深層学習が解決すべき重要な問題は貢献度の分布です
次の囲碁ゲームを例に挙げます。ゲームが行われるたびに、最終結果は勝ちか負けのいずれかになります。どの手が最終的な勝利につながり、どの手が最終的な敗北につながったのかを考えていきます。各手の貢献度をどう判断するかということは貢献度の配分の問題であり、これも非常に難しい問題である。
ある意味、深層学習は一種の強化学習(RL)とも言えますが、内部の各コンポーネントは直接監視情報を取得することはできず、モデル全体の最終的な監視情報(報酬)を通じて取得する必要があります。確実な遅れ。
ニューラル ネットワーク モデルでは、誤差逆伝播アルゴリズムを使用でき、寄与分布問題をより適切に解決できます。
エンドツーエンドの学習
伝統的な学習スタイル
一部の複雑なタスクでは、従来の機械学習手法ではタスクの入力と出力を多くのサブモジュール (または複数のステージ) に人為的に分割する必要があり、各サブモジュールは個別に学習されます。
たとえば、自然言語理解タスクには通常、単語の分割、品詞のタグ付け、構文分析、意味分析、意味推論などの手順が必要です。
この学習方法には2つの問題があります
まず、各モジュールは個別に最適化する必要があり、その最適化目標とミッション全体の目標が一貫していることが保証されていません。
2 つ目はエラーの伝播です。つまり、前のステップでのエラーは後続のモデルに大きな影響を与えます。これにより、機械学習手法の実際の適用がさらに困難になります。
新しい学習方法
エンドツーエンド学習は、エンドツーエンド トレーニングとも呼ばれ、学習プロセス中にモジュールや段階でトレーニングを実施せずに、タスクを直接最適化するという全体的な目標を指します。
一般に、さまざまなモジュールやステージの機能を明示的に与える必要はなく、中間プロセスで人間が介入する必要もありません。
ニューラル ネットワーク モデルを使用したほとんどの深層学習も、エンドツーエンド学習とみなすことができます。
一般的に使用される深層学習フレームワーク
Theano: Theano プロジェクトを効率的に定義、最適化、実行するために使用されるモントリオール大学の Python ツールキットは、現在メンテナンスが終了しています。多次元配列データは数式に相当します。 Theano は GPU と効率的なシンボルを透過的に使用できます 差分。
Caffe: 正式名は Convolutional Architecture for Fast Feature Embedding で、実装するネットワーク構造を構成ファイルで指定でき、コーディングは必要ありません。 Caffe は C と Python で実装されており、主にコンピューター ビジョンに使用されます。
TensorFlow: Google によって開発された Python ツールキットで、CPU または GPU を備えた任意のデバイス上で実行できます。 TensorFlow の計算プロセスはデータ フロー グラフを使用して表現されます。 Tensor Flow の名前は、その計算プロセスにおける演算オブジェクトが多次元配列、つまりテンソルであることに由来しています。
Chainer: 動的コンピューティング グラフを使用する初期のニューラル ネットワーク フレームワークの 1 つで、その中心的な開発チームは日本の機械学習スタートアップである Preferred Networks です。 Tensorflow、Theano、Caffe、その他のフレームワークで使用される静的計算グラフと比較して、動的計算グラフは実行時に計算グラフを動的に構築できるため、一部の複雑な意思決定や推論タスクに非常に適しています。
PyTorch5: Facebook、NVIDIA、Twitter などが開発、保守している深層学習フレームワーク。その前身は Lua 言語の Torch6 です。 PyTorch は動的コンピューティング グラフに基づくフレームワークでもあり、ニューラル ネットワークの構造を動的に変更する必要があるタスクにおいて明らかな利点があります。
本書の構成
パーセプトロン
パーセプトロンは入力と出力を持つアルゴリズムです。入力が与えられると、指定された値が出力されます。
パーセプトロンは重みとバイアスをパラメータとして設定します
AND ゲートや OR ゲートなどの論理回路は、パーセプトロンを使用して表現できます。
XOR ゲートは単層パーセプトロンでは表現できません。
XOR ゲートは 2 層パーセプトロンを使用して表現できます
単層パーセプトロンは線形空間のみを表現できますが、多層パーセプトロンは非線形空間を表現できます。
2 層パーセプトロンは (理論上は) コンピューターを表すことができます。
ニューラルネットワーク
パーセプトロンとニューラルネットワーク
「ナイーブ パーセプトロン」とは、単層ネットワークと、活性化関数としてステップ関数を使用するモデルを指します。
「多層パーセプトロン」とは、ニューラルネットワーク、すなわち、シグモイド関数やReLU関数などの滑らかな活性化関数を用いた多層ネットワークを指す。
演算:ニューラルネットワークの内積
Y = np.dot(X, W)
ニューラル ネットワークは、行列演算を使用することで効率的に実装できます。
アフィン層
ニューラルネットワークの順伝播で行われる行列積演算は、幾何学の分野では「アフィン変換」と呼ばれます。
アフィン変換には線形変換と平行移動があり、それぞれニューラルネットワークの加重和演算とオフセット演算に相当する。
Y = シグモイド(Y)
出力層
活性化関数: 回帰問題には恒等関数が使用され、分類問題にはソフトマックス関数が使用されます。
恒等関数
入力信号はそのまま出力されます
ソフトマックス関数
出力層に合計 n 個のニューロンがあると仮定し、k 番目のニューロンの出力 yk を計算します。
特徴:出力層の出力値の合計が1となる
注: オーバーフローの問題
量
分類問題
通常はカテゴリの数に設定されます
手書き数字認識
入力層には 28*28=784 個のニューロンがあり、出力層には 10 個のニューロンがあります。 2 つの隠れ層もあり、ニューロンの数は任意の値にできます。
バッチ処理
複数のデータセットを一度に入力する
ニューラルネットワーク学習
損失関数
概念の導入
最適なパラメーター (重みとバイアス) を探すときは、損失関数の値をできるだけ小さくするパラメーターを探すことになるため、パラメーターの導関数 (正確には勾配) を計算する必要があります。
なぜ認識精度を直接指標として使用しないのでしょうか?
パラメータの導関数はほとんどの場所で 0 になります。
活性化関数としてのステップ関数についても同様です
タイプ
平均二乗誤差
クロスエントロピーエラー
ミニバッチ
いくつかのテストデータを抽出する
勾配
すべての変数の偏導関数によって合計されたベクトルは勾配と呼ばれます
勾配が示す方向は、各点の関数値が最も減少する方向である。
ハイパーパラメータ
手動設定
学習レート
ミニバッチサイズ
更新回数 iters_num
得たトレーニング
重み w とバイアス シータ
ニューラルネットワーク
重みパラメータに対する損失関数の勾配
時代
サイクル数/ミニバッチ サイズ
確率的勾配降下法 (SGD)
ランダムに選択されたデータに対して勾配降下を実行する
誤差逆伝播法
数値微分はシンプルで実装が簡単ですが、計算に時間がかかるという欠点があります。重みパラメータの勾配を効率的に計算できる方法として誤差逆伝播法があります。
計算グラフ
計算グラフを利用することで計算過程を直感的に把握できます
計算グラフの順伝播では、一般的な計算が実行されます。計算グラフを逆伝播することにより、各ノードの導関数を計算できます。
層 l の誤差項は、層 l 1 の誤差項によって計算できます。 得られた、これは誤差の逆伝播です。
式
計算する
黄色の量はバックプロパゲーション中に得られた値です
緑色の量は既知の量です
ニューラルネットワークの構成要素を層として実装することで、勾配を効率的に計算できる
数値微分で得られた結果と誤差逆伝播法を比較することで、誤差逆伝播法の実装が正しいかどうかを確認できます(勾配確認)
参考動画
https://www.bilibili.com/video/BV1LM411J7cW/?spm_id_from=333.788&vd_source=048c7bdfe54313b8b3ee1483d9d07e38
畳み込みニューラル ネットワーク
すべては可能な限りシンプルである必要がありますが、シンプルすぎてもいけません。 [アルバート・アインシュタイン]
フレーム全体
比較した
全結合層(アフィン層)をベースとしたネットワーク
CNNベースのネットワーク
リンクの順序
Convolution[畳み込み層]-ReLU-(Pooling[プーリング層])
出力に近い層は以前の Affine [アフィン変換] - ReLU の組み合わせを使用します
最終出力層は以前の Affine-Softmax の組み合わせを使用します。
畳み込み層
コンボリューションの概念
全結合層の問題
データの形状は「無視」されます。通常、画像は高さ、長さ、チャネル方向の 3 次元形状ですが、入力時に 3 次元データを 1 次元データに平坦化する必要があります。
画像は 3 次元形状であり、この形状には重要な空間情報が含まれている必要があります。
空間的に隣接するピクセルは同様の値を持ちます
RBG の各チャネルは互いに密接に関連しています。
遠く離れたピクセル間の相関はほとんどありません
畳み込み層は形状を変えずに維持できる
意味
畳み込み層の入力データと出力データは特徴マップと呼ばれます
畳み込み層の入力データは入力特徴マップと呼ばれます
出力データは出力特徴マップと呼ばれます
畳み込み演算
畳み込み演算は画像処理におけるフィルタ演算に相当します。
畳み込みの主な機能は、画像 (または何らかの特徴) 上で畳み込みカーネル (つまり、フィルター) をスライドさせ、畳み込み演算を通じて新しい特徴セットを取得することです。
二次元
画像 X ∈ R(M×N) とフィルター W ∈ R が与えられたとします。 (m×n)、一般に m << M、n << N、畳み込みは次のようになります。
三次元
相関
畳み込みを計算するプロセスでは、多くの場合、畳み込みカーネルを反転する必要があります。
反転とは、2 次元で順序を逆にする (上から下、左から右)、つまり 180 度回転することです。
具体的な実装に関しては、畳み込みの代わりに相互相関演算が使用され、不必要な演算やオーバーヘッドが削減されます。
相互相関は 2 つの系列間の相関を測定する関数で、通常はスライディング ウィンドウのドット積計算を使用して実装されます。
画像 X ∈ R(M×N) と畳み込みカーネル W ∈ R が与えられたとします。 (m×n)、それらの相互相関は次のようになります。
相互相関と畳み込みの違いは、畳み込みカーネルが反転されるかどうかだけです。相互相関は、ノンフリップ畳み込みとも呼ばれます。
畳み込みは、特徴抽出のためにニューラル ネットワークで使用されます。畳み込みカーネルが反転されるかどうかは、その特徴抽出機能とは関係ありません。特にコンボリューション カーネルが学習可能なパラメータである場合、コンボリューションと相互相関は同等です。
畳み込みのバリエーション
ゼロパディング
スペースサイズを一定に保つために、入力データをパディングする必要があります
歩長
フィルターが適用される位置の間隔はストライドと呼ばれます
よく使用される畳み込み
ナロー畳み込み: ステップ サイズ s = 1、両端にゼロ パディングなし、p = 0、畳み込み後の出力長は n − m 1 です。
ワイド畳み込み: ステップ サイズ s = 1、両端のゼロ パディング p = m − 1、畳み込み後の出力長は n m − 1 です。
等幅畳み込み: ステップ サイズ s = 1、両端のゼロ パディング p = (m −1)/2、畳み込み後の出力長 n。
畳み込みの数学的性質
3Dデータの畳み込み演算
入力データとフィルターのチャンネル番号は同じ値に設定する必要があります。
複数の畳み込み演算
畳み込み演算のフィルタに関しては、フィルタの数も考慮する必要があります。したがって、フィルタの重みデータは4次元データとして(output_channel, input_channel, height, width)の順に記述する必要があります。たとえば、チャンネル番号 3、サイズ 5 × 5 のフィルターが 20 個ある場合、(20, 3, 5, 5) と書くことができます。
バッチ処理
畳み込み演算もバッチ処理に対応してほしいと思います。そのためには、各レイヤー間で受け渡されるデータを 4 次元データとして保存する必要があります。具体的には、(batch_num、channel、height、width)の順にデータが保存されます。
畳み込み層のプロパティ
ローカル接続: 畳み込み層 (l 番目の層とする) の各ニューロンは、次の層 (l-1 層) のローカル ウィンドウ内のニューロンにのみ接続され、ローカル接続ネットワークを形成します。畳み込み層と次の層の間の接続数は、元の n(l) × n(l - 1) 接続から n(l) × m 接続に大幅に減少します。 mはフィルターサイズです。
重み共有: パラメータとしてのフィルター w(l) は、層 l のすべてのニューロンで同じです。
ローカル接続と重み共有により、畳み込み層のパラメータは m 次元の重み w(l) と 1 次元のバイアス b(l) のみを持ち、合計 m 1 個のパラメータを持ちます。
層 l のニューロンの数は恣意的に選択されるのではなく、n(l) = n(l−1) − m 1 を満たします。
プーリング層
アグリゲーション層、サブサンプリング層とも呼ばれます
プーリングとは特徴の選択であり、特徴の数を減らすことでパラメータの数を減らし、特徴の寸法を減らし、高さおよび長さ方向のスペースを削減します。
よく使用される集計関数
最大値: 一般に、領域内のすべてのニューロンの最大値が取得されます。
平均集計 (Mean): 一般に、領域内のすべてのニューロンの平均値が取得されます。
一般的なプーリング層は、各特徴マップを 2×2 サイズの重複しない領域に分割し、ダウンサンプリングに最大プーリングを使用します。
プーリング層は特別な畳み込み層とみなすこともできます
一部の初期の畳み込みネットワーク (LeNet-5 など) では、非線形活性化関数がプーリング層で使用されることがありました。
ここで、Y('d) はプーリング層の出力、f(・) は非線形活性化関数、w(d) と b(d) は学習可能なスカラー重みとバイアスです。
プーリング層の特徴
学習するパラメータはありません
チャンネル数は変わらない
小さな位置変化に対するロバスト性(ロバスト性)
パラメータ学習
誤差項の計算
CNNの可視化
レイヤ 1 の重みの視覚化
学習前のフィルタはランダムに初期化されているため白黒の濃淡にパターンはありませんが、学習後のフィルタは規則的な画像になります。学習により、白から黒へグラデーションするフィルターやブロック状の領域(ブロブと呼ばれる)を含むフィルターなど、通常のフィルターに更新されることがわかりました。水平および垂直エッジに応答するフィルター
畳み込み層のフィルターがエッジやパッチなどの元の情報を抽出することがわかります。実装されたばかりの CNN は、この生の情報を後続のレイヤーに渡します。
階層構造に基づく情報抽出
CNN の畳み込み層から抽出された情報。レイヤー 1 のニューロンはエッジまたはパッチに応答し、レイヤー 3 はテクスチャに応答し、レイヤー 5 はオブジェクトのパーツに応答し、最後の完全に接続されたレイヤーはオブジェクトのカテゴリ (犬または車) に応答します。
複数の畳み込み層を積み重ねると、層が深くなるにつれて、抽出される情報がより複雑かつ抽象的になります。これは深層学習の非常に興味深い部分です。層が深くなるにつれて、ニューロンは単純な形状から「高レベルの」情報に変化します。つまり、物事の「意味」を理解するのと同じように、反応の対象も徐々に変化していくのです。
典型的な畳み込みニューラル ネットワーク
ルネット-5
LeNet は、手書き数字認識用のネットワークとして 1998 年に提案されました。連続した畳み込み層とプーリング層があり、最終的に全結合層を通じて結果を出力します。
LeNet-5 は入力層を除くと合計 7 層あります。
入力レイヤー: 入力画像サイズは 32 × 32 = 1024 です。
畳み込み層: 6 つの 5 × 5 フィルターを使用して、サイズ 28 × 28 = 784 の特徴マップの 6 つのグループが取得されます。したがって、C1層のニューロン数は6×784=4704個、学習可能なパラメータ数は6×25×6=156個、接続数は156×784=122304個となります(バイアス含む、以下同様)。
プーリング層: サンプリング ウィンドウは 2×2 で、平均プーリングが使用され、非線形関数が使用されます。ニューロンの数は 6 × 14 × 14 = 1176、学習可能なパラメータの数は 6 × (1 1) = 12、接続数は 6 × 196 × (4 1) = 5,880 です。
畳み込み層。 LeNet-5 では、入力と出力の特徴マップ間の依存関係を定義するために接続テーブルが使用されます。図に示すように、合計 60 個の 5 × 5 フィルターを使用して、サイズが 10 × の特徴マップの 16 グループが取得されます。 10.ニューロンの数は 16 × 100 = 1, 600、学習可能なパラメータの数は (60 × 25) 16 = 1, 516、接続数は 100 × 1, 516 = 151, 600 です。
プーリング層では、サンプリング ウィンドウは 2 × 2 で、5 × 5 サイズの 16 個の特徴マップが得られます。学習可能なパラメーターの数は 16 × 2 = 32、接続数は 16 × 25 × (4 1) となります。 ) = 2000。
畳み込み層は、120 × 16 = 1、920 の 5 × 5 フィルターを使用して、サイズ 1 × 1 の特徴マップの 120 セットを取得します。 C5 層のニューロンの数は 120、学習可能なパラメータの数は 1、920 × 25 120 = 48120、接続数は 120 × (16 × 25 1) = 48120 です。
全結合層には 84 個のニューロンがあり、トレーニング可能なパラメータの数は 84×(120 1) = 10164 です。接続数とトレーニング可能なパラメーターの数は同じ 10164 です。
出力層: 出力層は 10 個のユークリッド動径基底関数で構成されます。
結合テーブル
畳み込み層の入力特徴マップと出力特徴マップ間の完全接続関係は必要なく、非共有畳み込みを使用できます。
入力特徴マップと出力特徴マップ間の接続関係を記述するリンク テーブル (Link Table) T を定義します。
p 番目の出力特徴マップが d 番目の入力特徴マップに依存する場合、Tp,d = 1、それ以外の場合は 0 になります。
アレックスネット
これは 2012 年に提案され、最新の深層畳み込みネットワークの多くの技術手法を使用しています。
GPUを使用した並列トレーニング
活性化関数はReLUを使用
ドロップアウトを使用して過学習を防止する
データ拡張を使用してモデルの精度を向上させる
ローカル正規化に LRN (Local Response Normalization) レイヤーを使用する
インセプションネットワーク
インセプション モジュール: 畳み込み層には、異なるサイズの複数の畳み込み演算が含まれています
インセプション ネットワークは、複数のインセプション モジュールと少数のアグリゲーション レイヤーによってスタックされます。
V1バージョン
Inception ネットワークの最も初期の v1 バージョンは非常に有名な GoogLeNet [Szegedy et al., 2015] であり、2014 年の ImageNet 画像分類コンテストで優勝しました。
残留ネットワーク ResNet
非線形畳み込み層に直接エッジを追加することで情報伝播効率が向上します。
非線形要素
1 つ以上の畳み込み層にすることができます
この非線形ユニット f(x, θ) を目的関数 h(x) に近似させます。
ニューラル ネットワークで構成される非線形ユニットは、元の目的関数または残差関数を近似する十分な能力を備えていますが、実際には後者の方が学習が容易です。
結論: 非線形ユニット f(x, θ) で残差関数 h(x)−x を近似し、f(x, θ) x を使用して h(x) を近似します。
残差ネットワークは、直列に接続された多くの残差ユニットで構成される非常に深いネットワークです。
他の畳み込み手法
転置畳み込み
Atrous コンボリューション (拡張コンボリューション)
ディープラーニング
ネットワークを深めます
より深いネットワークへ
このネットワークは次のセクションで紹介する VGG を指します。
3×3の小さなフィルターに基づく畳み込み層
活性化関数はReLUです
ドロップアウト層は、完全に接続された層の背後で使用されます。
Adamベースの最適化
He の初期値を重みの初期値として使用します。
認識精度は99.38%
認識精度のさらなる向上
アンサンブル学習
学習率の低下
データ拡張
回転、垂直方向または水平方向の移動、トリミング、反転、明るさの増加などの小さな変更を適用して、画像の数を増やします。
より深いモチベーション
認識性能の向上
深化の重要性は、ILSVRC に代表される大規模な画像認識コンテストの結果からもわかります。このコンペティションの結果は、最近のトップメソッドは主にディープラーニングに基づいており、ネットワークの層を徐々に深化させる傾向があることを示しています。つまり、階層が深いほど認識性能が高いことがわかります。
ネットワークのパラメータの数を減らす
小さなフィルターを積み重ねてネットワークを深くする利点は、パラメーターの数を減らし、受容野 (ニューロンに変化を与える局所的な空間領域) を拡大できることです。さらに、オーバーレイ層を介して、ReLUなどの活性化関数を畳み込み層の途中に挟み込むことで、ネットワークの表現力がさらに向上します。これは、ネットワークに活性化関数による「非線形」の表現力が加わるため、非線形関数の重ね合わせにより、より複雑な表現が可能となるためです。
学習をより効率的にする
階層を深くしないネットワークに比べ、階層を深くすることで学習データを削減でき、効率的に学習を行うことができます。
ディープラーニングのネットワーク構造
ILSVRC コンテスト
ImageNet にはさまざまな画像が含まれており、各画像にはラベル (カテゴリ名) が関連付けられています。この膨大なデータセットを用いたILSVRC画像認識コンテストが毎年開催されています。
2012年に大規模な画像認識コンペティションILSVRCが開催されました。この年のコンテストでは、ディープラーニング(通称AlexNet)をベースにした手法が圧勝し、それまでの画像認識手法を完全に覆しました。その後の大会でもディープラーニングが舞台の中心で活躍してきました。
特に、2015 年の ResNet (150 層を超えるディープ ネットワーク) では、誤認識率が 3.5% に減少しました。この結果は一般人の認識能力をも超えていると言われています。
VGG
VGG は、畳み込み層とプーリング層で構成される基本的な CNN です。ただし、その特徴は、深さのある(層の深さによって「VGG16」または「VGG19」と呼ばれることもあります)16層(または19層)に重み付き層(畳み込み層または全結合層)を重ね合わせていることです。
GoogLeNet
ネットワークは垂直方向の深さだけでなく、水平方向の幅も持っており、これをインセプション構造と呼びます。
レスネット
従来のネットワークよりも深い構造を持っています
深さを深くすることがパフォーマンスを向上させるために重要であることはすでにわかっています。しかし、ディープラーニングでは深さを深めすぎると学習がスムーズに進まず、最終的なパフォーマンスが低下してしまうことが多くあります。 ResNetでは、このような問題を解決するために「ショートカット構造」(「ショートカット」または「パス」とも呼ばれます)が導入されています。このショートカット構造をインポートした後、層が深くなるにつれてパフォーマンスを継続的に向上させることができます (もちろん、層の深化にも制限があります)。
実際には、ImageNet の膨大なデータセットを使って学習した重みデータを柔軟に適用して、学習した重み (部分) を他のニューラル ネットワークにコピーして再学習 (ファイン チューニング) することがよくあります。例えば、VGGと同じ構造のネットワークを用意し、学習した重みを初期値として使用し、新しいデータセットを再学習の対象として使用します。転移学習は、手元にあるデータセットが小さい場合に非常に効果的です。
ディープラーニングの高速化
解決する必要がある問題
AlexNet のフォワード処理における各層の時間比率。左側が GPU 使用時、右側が CPU 使用時です。図中の「conv」は畳み込み層、「pool」はプーリング層、「fc」は全結合層、「norm」は正則化層に相当します。
畳み込み層の処理時間は、GPU 全体の 95%、CPU 全体の 89% を占めます。
GPUベースの高速化
GPUは主にNVIDIAとAMDの2社から提供されています。どちらの GPU も一般的な数値計算に使用できますが、NVIDIA の GPU はディープラーニングにより「近い」です。実際、ほとんどの深層学習フレームワークは、NVIDIA の GPU からのみ恩恵を受けます。これは、ディープ ラーニング フレームワークが、NVIDIA が提供する GPU コンピューティングの総合開発環境である CUDA を使用しているためです。
分散学習
複数の GPU または複数のマシンでの分散コンピューティング
Google の TensorFlow と Microsoft の CNTK は、開発プロセス中の分散学習を非常に重視しています。
横軸はGPUの数です 縦軸はシングルGPUと比較した高速化率です。
算術精度の桁数削減
数値精度 (値を表す桁数) については、深層学習では桁数の数値精度が必要ないことがすでにわかっています。これはニューラル ネットワークの重要な特性です。この特性はニューラル ネットワークの堅牢性に基づいています。
将来的には半精度浮動小数点数が標準となり、前世代のGPUと比較して最大約2倍の高速化が期待されています。
ディープラーニングの応用事例
物体検出
画像から物体の種類と位置を特定する
CNNを物体検出に利用する手法の中にR-CNNと呼ばれる手法があります。
画像のセグメンテーション
ピクセルレベルで画像を分類する
FCN は、1 回の順方向プロセスを通じてすべてのピクセルを分類します。
FCN は文字通り「畳み込み層のみで構成されるネットワーク」を意味します。全結合層を含む一般的な CNN と比較して、FCN は全結合層を同じ役割を果たす畳み込み層に置き換えます。
画像キャプションの生成
深層学習に基づいて画像キャプションを生成する代表的な手法はNICと呼ばれます。
NICはディープCNNと自然言語を処理するRNN(リカレントニューラルネットワーク)で構成されています。
ディープラーニングの未来
画像スタイルの変換
画像生成
オートパイロット
強化学習
自然言語と単語の分散表現
マーティ:「これは重いよ。」 ブラウン博士: 「将来、物事はそんなに重くなるのですか?」 ――映画『バック・トゥ・ザ・フューチャー』
自然言語処理とは
私たちの言語は言葉で構成されており、言語の意味も言葉で構成されています。言い換えれば、単語は意味の最小単位です。
コンピュータに単語の意味を理解させる 3 つの方法
シソーラスベースのアプローチ
カウントベースのアプローチ
推論ベースのアプローチ (word2vec)
シソーラスベースのアプローチ
単語の意味を手動で定義することを検討してください
現在広く使用されているのは同義語辞書です
各単語の意味に応じた上位名と下位名の関係を図式化したもの
ワードネット
最も有名な同義語辞書
効果
単語の同義語を取得する
単語間の類似性を計算する
NLTKモジュール経由で使用
問題点
新しい言葉が次々と生まれ、時代の変化に対応するのが難しい
人件費が高い
微妙な違いを言葉で表現できない
カウントベースのアプローチ
コーパス
コーパスとは大量のテキストデータです
自然言語処理の分野で用いられるコーパスでは、テキストデータに付加情報を付加することがあります。たとえば、テキスト データの各単語に品詞を付けることができます。ここでは、使用するコーパスにはタグが付加されていないものとします。
Python ベースのコーパス前処理
有名なコーパス
ウィキペディアとグーグルニュース
前処理
大文字 -> 小文字
text. lower()
句読点を処理する
text.replace('.', ' .')
re.split('(\W )', テキスト)
\W: 単語以外の文字 (文字、数字、アンダースコアではない) と一致します。
: 前のパターン "\W" が 1 回以上繰り返されたことを示します。
単語IDと対応表を作成する
単語のリストを単語 ID のリストに変換します。
コーパス = [単語内の w の word_to_id[w]]
単語の分散表現
ワードドメインでコンパクトで合理的なベクトル表現を構築する
分布仮説
単語の意味はそれを囲む単語によって形成されます
コンテキストとは、中央にある単語の周囲の単語を指します
コンテキストのサイズはウィンドウ サイズと呼ばれます
ウィンドウ サイズは 1 で、コンテキストには左右に 1 つの単語が含まれます。
共起行列
ベクトルを使用する最も簡単な方法は、その周囲に単語が何回出現するかを数えることです。
text = 'あなたはさよならを言い、私はこんにちはと言います。
ウィンドウサイズを1に設定します
ベクトル間の類似性
コサイン類似度
似た単語の並べ替え
クエリ単語の単語ベクトルを取得します。
クエリ単語の単語ベクトルと他のすべての単語ベクトルの間のコサイン類似度をそれぞれ取得します。
コサイン類似度に基づいた結果、値を降順で表示
カウントベースのメソッドの改善
相互情報をクリック
共起マトリックスでは、「the」のような一般的な単語は、「car」のような名詞と強い相関があると見なされます。
PMI
、P(x) は x が発生する確率を表し、P(y) は y が発生する確率を表し、P(x, y) は x と y が同時に発生する確率を表します。
共起行列に基づく PMI
不十分
2つの単語の共起数が0の場合、log(2)(0) = −∞
プラスポイント相互情報量
共起行列に基づいて PPMI 行列を取得します
次元削減
データの分布を観察し、重要な「軸」を見つける必要がある
特異値分解 (SVD)
SVD はあらゆる行列を 3 つの行列の積に分解します。
ここで、U と V は列ベクトルが互いに直交する直交行列、S は対角要素を除くすべての対角要素が 0 である対角行列です。
元の行列は、行列 U 内の冗長な列ベクトルを削除することで近似できます。
U、S、V = np.linalg.svd(W)
行列サイズが N*N の場合、SVD の計算量は O(N^3) に達します。したがって、Truncated SVD などのより高速な方法がよく使用されます。 Truncated SVD は、特異値が小さい部分を切り捨てることで高速化を実現します。
sklearn.utils.extmathからrandomized_svdをインポート U、S、V =randomized_svd(W、n_components=wordvec_size、n_iter=5、random_state=None)
PTB データセット
PTB コーパスは、提案された手法を評価するためのベンチマークとしてよく使用されます。
PTB コーパスの前処理
まれな単語を特殊文字に置き換える括弧
特定の数字を「N」に置き換えます
私が行った前処理
すべての文章を連結し、一つの大きな時系列データとして扱います。このとき、各文の末尾に特殊文字 <eos> が挿入されます。
ハイパーパラメータの割り当て
ウィンドウサイズ = 2
wordvec_size = 100
PTBデータセットに基づく評価
クエリ単語 you では、i や we などの人称代名詞が文法上同じ用法を持つ単語が 1 位にランクされていることがわかります。
クエリ語「年」には、「月」や「四半期」などの同義語があります。
クエリ語 car には、auto や vehicle などの同義語があります。
トヨタを検索語として使用すると、日産、ホンダ、レクサスなどの自動車メーカー名またはブランド名が表示されました。
要約する
コーパスを使用してコンテキスト内の単語の数を計算し、それらを PPMI 行列に変換し、SVD 次元削減に基づいて適切な単語ベクトルを取得します。
word2vec
「判断の根拠がないのなら、理屈で考えてはいけません。」 ——アーサー・コナン・ドイル『ボヘミアのスキャンダル』
単語の埋め込み
Word2Vec は「単語埋め込み」を生成するアルゴリズムです
Word2Vec に加えて、GloVe (Global Vectors for Word Representation)、FastText など、単語埋め込みを生成する他の方法もあります。これらの方法ではさまざまな戦略とアルゴリズムが使用されますが、それらはすべてベクトル空間で単語の意味情報を効果的に取得することを目的としています。
推論ベースの手法とニューラル ネットワーク
カウントベースの方法の問題
現実の世界では、コーパスは非常に多くの単語を扱います。例えば、英語の語彙は100万語以上あると言われています。語彙サイズが100万を超える場合、カウントベースの方法を使用するには100万×100万という巨大な行列を生成する必要がありますが、このような大きな行列に対してSVDを実行することは明らかに非現実的です。
ニューラルネットワークを使用した推論ベースのアプローチ
ミニバッチデータで学習します。つまり、データの一部を学習に使用し、重みを繰り返し更新します。
ニューラル ネットワークの学習は、複数のマシンと複数の GPU を使用して並行して実行できるため、学習プロセス全体が高速化されます。
推論ベースの手法の概要
目標
周囲の単語 (コンテキスト) が与えられたときに、真ん中にどの単語が来るかを、クローゼのように予測します。
推論方法
コンテキストを入力すると、モデルは各単語の出現確率を出力します。
モデル学習の結果として、単語の分散表現が得られます。
ニューラルネットワークで単語を処理する方法
単語をベクトルに変換する
ニューラル ネットワークは、you や Say のように単語を直接処理することはできません。ニューラル ネットワークを使用して単語を処理するには、まず単語を固定長ベクトルに変換する必要があります。
変換方法
ワンホットベクトル
1 つの要素だけが 1、他の要素は 0
ニューラルネットワーク
入力層
全結合層
初期の重みはランダムです
簡単な単語2vec
CBOWモデルの推論
構造
特徴
入力レイヤーは 2 つあります
入力層から中間層への変換は、同じ全結合層 (重み W(in)) によって完了します。
中間層から出力層ニューロンへの変換は、完全に接続された別の層 (重み W(out)) によって完了します。
中間層のニューロンは、全結合層によって変換された後に各入力層によって取得された値の「平均」です。
出力層のニューロンは各単語のスコアであり、その値が高いほど 値が大きいほど、対応する単語の出現確率が高くなります。
CBOWモデル学習
Softmax 関数を使用してスコアを確率に変換する
これらの確率と教師付きラベルの間のクロスエントロピー誤差を見つけます。
損失として学ぶ
word2vec の加重分散表現
W(in) の重みは、必要な単語の分散表現です。
研究データの準備
文脈と対象となる単語
ワンホット表現への変換
CBOWモデルの実装
追加情報
CBOW モデルと確率
wt−1 と wt 1 が発生した後に wt が発生する確率。
CBOWモデルの損失関数L(負の対数尤度)
スキップグラムモデル
word2vecには2つのモデルがあります
CBOW
スキップグラム
Skip-gramは、CBOWモデルで処理された文脈と対象単語を反転するモデルです。
スキップグラムネットワーク構造図
スキップグラムモデルと確率
スキップグラム モデルには入力層が 1 つだけあり、出力層の数はコンテキスト内の単語の数と同じです。まず、各出力層の損失を個別に計算し、最終的な損失として合計する必要があります。
中間単語(対象単語)wtに基づいて文脈wt−1とwt1を予測する
スキップグラム モデルの損失関数は次のように表すことができます。
損失関数の比較
スキップグラムモデルの予測数は文脈単語の数と同数であるため、その損失関数は各文脈単語に対応する損失の合計を必要とします。 CBOW モデルでは、ターゲット単語の損失のみが必要です。
単語の分散表現の精度から判断すると、ほとんどの場合、skip-grm モデルの方が良い結果が得られます。
カウントベースと推論ベース
新しい単語を語彙に追加し、単語の分散表現を更新する必要があるシナリオ
カウントベースの方法では、最初から計算する必要があります
推論ベースの方法により、パラメータの段階的な学習が可能になります
単語の分散表現の性質
カウントベースの方法は主に単語の類似性をエンコードします
推論ベースの方法で単語間の複雑なパターンを理解できる
キングマン女性=女王
単語の分散表現の精度
推論ベースの方法とカウントベースの方法は区別できません
word2vecの高速化
すべてを知ろうとしないでください。そうしないと、何も分からなくなります。 ——デモクリトス(古代ギリシャの哲学者)
改善する
勉強
他の
word2vecの応用
word2vec を使用して取得された単語の分散表現を使用して、近似した単語を見つけることができます。
転移学習
ある分野で学んだ知識は他の分野にも応用できる
自然言語処理タスクを解決する場合、通常、word2vec は単語の分散表現を最初から学習するのではなく、まず大規模なコーパス (Wikipedia、Google ニュースなどのテキスト データ) 上で学習され、その後で学習されます。学習された分散表現は単一のタスクに適用されます。
テキスト分類、テキスト クラスタリング、品詞タグ付け、センチメント分析などの自然言語処理タスクでは、単語ベクトル化の最初のステップで、学習した単語の分散表現を使用できます。
単語の分散表現は、ほぼすべての種類の自然言語処理タスクでうまく機能します。
単語の分散表現を使用すると、ドキュメント (単語のシーケンス) を固定長のベクトルに変換することもできます。
自然言語をベクトルに変換できれば、多くの機械学習手法を使用できるようになります
単語ベクトルを評価する方法
人工的に作成された単語の類似性評価セットを評価する
猫と動物の類似度は 8、猫と車の類似度は 2 です。これと同様に、単語間の類似度も 0 から 10 のスコアで手動でスコア付けされます。
人々によって与えられたスコアと word2vec によって与えられたコサイン類似度を比較して、それらの間の相関関係を調べます。
結論は
モデルが異なれば精度も異なります (コーパスに基づいて最適なモデルを選択してください)
コーパスが大きいほど、より良い結果が得られます (常に大きなデータが必要です)
単語ベクトルの次元は中程度である必要があります (大きすぎると精度が低下します)。
RNN
何でも薄暗いじめじめした所でニヤーニヤー泣いて居た事丈は記憶して居る。 ——夏目漱石『吾輩は猫である』
確率と言語モデル
単純なフィードフォワード ネットワークでは、時系列データの特性を完全に学習することはできません。その結果、RNN (Recurrent Neural Network) が誕生しました。
確率論的な観点から見た word2vec
CBOWモデルの本来の目的である「文脈から対象単語を予測する」は何かに活用できないでしょうか? P(wt|wt−2, wt−1) はいくつかの実際的なシナリオで役割を果たすことができますか?
前に検討したウィンドウはすべて対称であり、次に左側のウィンドウのみを考慮します。
言語モデル
確率を使用して、一連の単語が出現する可能性、つまり一連の単語が自然である程度を評価します。
確率表現
ここで、P(A,B) = P(A|B)*P(B) = P(B|A)*P(A)
CBOW モデルを言語モデルとして使用する
マルコフ連鎖
ある事象の確率が、それに先行する N 個の事象のみに依存する場合、それは「N 次マルコフ連鎖」と呼ばれます。
文脈を左側の 2 つの単語に限定すると、二次マルコフ連鎖になります。
不十分
ウィンドウが短すぎるとコンテキストを結合できません
ウィンドウが長すぎる場合、コンテキスト内の単語の順序は無視されます。
CBOW は、Continuous Bag-Of-Words の略です。 Bag-Of-Words とは「言葉の入った袋」という意味で、袋の中の単語の順序は無視されます。
RNN は、コンテキストがどれほど長くても、コンテキスト情報を記憶できるメカニズムを備えています。したがって、RNN を使用すると、任意の長さの時系列データを処理できます。
word2vec は単語の分散表現を取得することを目的とした方法であり、通常は言語モデルでは使用されません。
RNN
リカレントニューラルネットワーク
RNN層の構造
時刻 t での入力は xt であり、時系列データ (x0、x1、...、xt、...) がレイヤーに入力されることを意味します。そして、入力に応じた形式で、(h0, h1, · · · , ht, · ·) を出力します。
出力には 2 つのフォークがあり、同じものがコピーされたことを意味します。出力内のフォークはそれ自体の入力になります。
ループを展開する
「瞬間」という言葉は、時系列データのインデックスを指すために使用します (つまり、時間 t における入力データは xt です)。 「t番目の単語」「t番目のRNN層」といった表現のほか、「時刻tの単語」や「時刻tのRNN層」といった表現も使われます。
RNN 層は各瞬間に 2 つの値を受け取ります。これらは、この層に渡される入力と前の RNN 層の出力です。
RNN には 2 つの重みがあります。つまり、入力 x を出力 h に変換する重み Wx と、前の RNN 層の出力を現時点の出力に変換する重み Wh です。さらに、バイアス b があります。
別の観点から見ると、RNN には状態 h があり、上記の式を通じて継続的に更新されます。したがって、 h は隠れ状態または隠れ状態ベクトルと呼ぶことができます。
2 つの概略図の描画方法は同等です
時間の経過によるバックプロパゲーション
時間ベースのバックプロパゲーション
BPTTに基づいて勾配を求めるには、各瞬間のRNN層の中間データをメモリに保存する必要があります。したがって、時系列データが長くなるにつれて、コンピューターのメモリ使用量 (計算だけでなく) も増加します。
切り捨てられたBPTT
上記の問題を解決するために、長い時系列データを処理する場合、ネットワーク接続を適切な長さに切断することが一般的に行われます。
時間軸方向に長すぎるネットワークを適当な位置で切り詰めて複数の小さなネットワークを作成し、切り出した小さなネットワークに対して誤差逆伝播法を行うこの方法をTruncated BPTT(トランケートされたBPTT)と呼びます。
Truncated BPTT では、ネットワークの逆方向伝播接続は切断されますが、順方向伝播接続は維持されます。
処理順序
最初に行うことは、ブロック 1 (x0, ..., x9) の入力データを RNN 層にフィードすることです。
最初に順伝播を実行し、次に逆伝播を実行して、目的の勾配を取得します。
次に、次のブロックの入力データ (x10、x11、...、x19) が RNN 層に入力されます。この順伝播の計算には、順伝播接続を維持できるように、前のブロックの最後の隠れ状態 h9 が必要です。
Truncated BPTT のミニバッチ学習
入力データの先頭で、個々のバッチ内で「オフセット」を作成する必要があります。
知らせ
データを順番に入力するには
入力データのバッチ(サンプルごと)の開始位置をずらすには
RNNの実装
Truncated BPTT に基づく学習を考えると、ターゲット ニューラル ネットワークは長さ T (T は任意の値) の時系列データを受け取り、これらの T 状態を層とみなすことができます。
一度に T ステップを処理する層を「時間 RNN 層」と呼びます。
Time RNN層の中でシングルステップ処理を行う層を「RNN層」と呼びます。
Time RNN と同様に、時系列データを総合的に処理するレイヤーには、「Time」という単語で始まる名前が付けられます。これは、本書で説明されている命名規則です。その後、Time Affine レイヤー、Time Embedding レイヤーなども実装していきます。
RNN層の実装
順伝播
誤差逆伝播法
時間RNN層の実装
順伝播
時間 RNN 層は、ブロック間で隠れ状態を継承するために、隠れ状態 h をメンバー変数に保存します。
パラメータ stateful を使用して、隠し状態 h が呼び出されたかどうかを記録します。バックプロパゲーションでは、ステートフルが False の場合、最初の RNN 層の隠れ状態はゼロ行列になります。
誤差逆伝播法
直前の時点で隠れ状態に流れた勾配をメンバー変数 dh に格納します。これは、第 7 章で seq2seq (シーケンス間) について説明するときに使用するためです。
時系列データを処理するためのレイヤーの実装
RNNLMの全体像
RNN ベースの言語モデルは RNNLM と呼ばれます
構造
レイヤー 1 は埋め込みレイヤーで、単語 ID を単語の分散表現 (単語ベクトル) に変換します。この単語ベクトルは RNN 層に供給されます。
RNN 層は、隠れ状態を次の層 (上) に出力し、さらに隠れ状態を次の RNN 層 (右) に出力します。
RNN 層によって上向きに出力された隠れ状態は、Affine 層を通過し、Softmax 層に渡されます。
サンプル
あなたはさようならと言い、私はこんにちはと言う
最初の単語 (単語 ID 0 の you) が入力されます。このとき、Softmax 層が出力する確率分布を見ると、say の確率が最も高いことがわかります。これは、あなたの後に現れる単語が、say であると正しく予測されていることを示しています。
単語2はこう言っています。このとき、Softmax層の出力は、goodbyeとhelloのほうが確率が高くなります。 RNN 層は「あなたが言った」という過去の情報を短い隠れ状態ベクトルとして保存するためです。 RNN 層の仕事は、この情報を上の Affine 層と次の瞬間の RNN 層に渡すことです。
タイムレイヤーの実装
ターゲットニューラルネットワーク構造
タイムアフィン
Time Affine レイヤーは単に T Affine レイヤーを使用するのではなく、行列演算を使用して全体の効率的な処理を実現します。
時間ソフトマックス
損失エラーは Softmax で実装されます。Cross Entropy Error レイヤーはクロス エントロピー エラーを計算します。
T Softmax with Loss レイヤーはそれぞれ損失を計算し、それらを加算して平均し、その結果の値が最終的な損失として使用されます。
RNNLMの学習と評価
RNNLMの実装
言語モデルの評価
入力データは1です
パープレキシティは、言語モデルの予測パフォーマンスを評価する指標としてよく使用されます。複雑さ=1/確率
入力データが複数ある
ここで、データ量をNとする。 tn はワンホット ベクトルの形式の正解ラベル、tnk は n 番目のデータの k 番目の値を表し、ynk は確率分布 (ニューラル ネットワークのソフトマックスの出力) を表します。ちなみにLはニューラルネットワークの損失です
確率が大きければ大きいほど良く、混乱が小さければ小さいほど良いです。
Perplexity は、次に選択できるオプションの数を表します。混乱度が 1.25 であれば、次の単語の候補は約 1 つであることを意味します。
RNNLMの学習
RNNLMのトレーナークラス
上記の操作をクラスにカプセル化します。
グラフ構造への拡張
リカレントニューラルネットワーク
3 つの隠れ層 h1、h2、および h3 があり、h1 は 2 つの入力 x1 および x2 から計算され、h2 は他の 2 つの入力層 x3 および x4 から計算され、h3 は 2 つの隠れ層 h1 および h2 から計算されます。
グラフネットワーク
ゲート付き RNN
荷物を降ろして身軽に旅しましょう。 ——ニーチェ
RNN というときは、前の章の RNN よりも LSTM 層を指します。前の章の RNN を明示的に参照する必要がある場合は、「単純な RNN」または「エルマン」と呼びます。
単純な RNN の問題
学習プロセス中に、RNN 層は「意味のある勾配」を過去に渡すことによって時間方向の依存関係を学習します。しかし、学習の勾配を制御するのは難しく、勾配の消失や勾配の爆発につながる可能性があります。
理由
活性化関数
タン
グラフからわかるように、その値は 1.0 未満であり、x が 0 から遠ざかるにつれて値は小さくなります。これは、逆伝播された勾配が Tanh ノードを通過するにつれて、その値がどんどん小さくなることを意味します。したがって、tanh 関数を T 回渡すと、勾配も T 回減少します。
ReLU
勾配が劣化しない
MatMul (行列積) ノード
勾配爆発
図に示すように、勾配のサイズは時間ステップとともに指数関数的に増加します。勾配爆発が発生すると、最終的にはオーバーフローや NaN (Not a Number、非数値) などの値が発生します。その結果、ニューラルネットワークの学習が正しく機能しなくなります。
グラデーションが消える
図に示すように、勾配のサイズは時間ステップとともに指数関数的に減少します。勾配の消失が発生すると、勾配は急速に小さくなります。勾配が小さくなると、重み勾配を更新できなくなり、モデルは長期的な依存関係を学習できなくなります。
変更理由
行列 Wh は T 回繰り返し乗算されます。 Wh がスカラーの場合、問題は単純になります。Wh が 1 より大きい場合、勾配は指数関数的に増加し、Wh が 1 より小さい場合、勾配は指数関数的に減少します。
Wh が行列の場合。この時点で、行列の特異値が指標になります。簡単に言うと、行列の特異値はデータの分散度を表します。この特異値 (より正確には複数の特異値の最大値) が 1 より大きいかどうかに応じて、勾配の大きさの変化を予測できます。
爆発的勾配への対策
勾配爆発を解決するには、勾配クリッピングと呼ばれる確立された方法があります。
ここでは、ニューラル ネットワークで使用されるすべてのパラメーターの勾配を変数に統合し、記号 g で表すことができると仮定します。次に、しきい値をしきい値に設定します。このとき、勾配のL2ノルムgが閾値以上であれば、上述したように勾配を補正する。
消失勾配と LSTM
RNN 学習では勾配消失も大きな問題となります。この問題を解決するには、RNN 層の構造を根本的に変更する必要があります。ここで、この章のトピックである Gated RNN が登場します。 Gated RNN フレームワーク (ネットワーク構造) は数多く提案されており、代表的なものとして LSTM や GRU があります。
LSTMインターフェース
LSTMとはLong Short-Term Memoryの略で、短期記憶(Short-Term Memory)を長期間維持できることを意味します。
まず、tanh(h(t−1)*Wh xt*Wx b) の計算を長方形ノード Tanh として表現します (ht−1 と xt は行ベクトルです)。
LSTMとRNNのインターフェース(入力と出力)を比較してみましょう
LSTM と RNN のインターフェイスの違いは、LSTM にもパス c があることです。この c はメモリユニット (または単に「ユニット」) と呼ばれ、LSTM の専用メモリ部門に相当します。
メモリ ユニットの特徴は、LSTM 層内でのみデータを送受信することです。つまり、LSTM の出力を受け取る側から見ると、LSTM の出力には隠れ状態ベクトル h のみが含まれます。メモリユニット c は外界からは見えず、その存在を考慮する必要さえありません。
LSTM層の構造
ct は、時刻 t における LSTM のメモリを保存します。これには、過去から時刻 t までの必要な情報がすべて含まれていると考えることができます。そして、このキャリアメモリのctに基づいて、隠れ状態htが出力される。
計算する
現在の記憶単位ctは、3つの入力c(t−1)、h(t−1)、xtに基づいて「何らかの計算」(後述)により計算される。
隠れ状態 ht は更新された ct を使用して計算されます。式は ht = Tanh(ct) です。
ゲート
ドアの開閉度もデータから自動学習し、開閉度を0.0~1.0(1.0が全開)の実数で表します。
出力ゲート
隠れ状態 ht は記憶単位 ct に Tanh 関数のみを適用し、tanh(ct) にゲートを適用することを検討します。このゲートは次の隠れ状態 ht の出力を管理するため、出力ゲートと呼ばれます。
出力ゲートは次のように計算されます。シグモイド関数は σ() で表されます。
ht は、o と Tanh(ct) の積から計算できます。計算方法は、対応する要素の積である要素ごとの積です。アダマール積とも呼ばれます。
忘却の扉
ここで、記憶単位 c(t−1) に不要な記憶を忘れるためのゲートを追加します。これをここでは忘却ゲートと呼びます。
フォーゲットゲートの計算は次のとおりです。
ct は、この f と前のメモリユニットの対応する要素 ct−1 の積によって取得されます。
新しいメモリユニット
ここで、記憶すべき新しい情報をこのメモリ ユニットに追加したいと思います。このために、新しい Tanh ノードを追加します。
Tanhノードに基づいて計算された結果は、前回の記憶部ct-1に追加されている。
この Tanh ノードの役割はゲートではなく、メモリ ユニットに新しい情報を追加することです。したがって、活性化関数としてシグモイド関数を使用せず、tanh 関数を使用します。
入力ゲート
図 6-17 の g にゲートを追加します。この新しく追加されたゲートを、ここでは入力ゲートと呼びます。
入力ゲートは、新しい情報 g の各要素の値を決定します。入力ゲートは、何も考えずに新しい情報を追加するのではなく、どの情報を追加するかを選択します。言い換えれば、入力ゲートは重み付けされた新しい情報を追加します。
入力ゲートは次のように計算されます。
LSTM グラジエントフロー
メモリセルのバックプロパゲーションは、「 」ノードと「×」ノードのみを通過します。 「 」ノードは上流からの勾配をそのまま流出させるため、勾配は変化しません(縮退します)。 「×」ノードの計算は行列積ではなく、対応する要素の積 (Hadama 積) であるため、勾配の変化は発生しません。
LSTMの実装
x*Wx h*Wh b などのアフィン変更については、1 つの式に統合できます。
一般に、行列ライブラリは「大きな行列」を計算する場合に高速になり、重みをまとめて管理することでソース コードがよりクリーンになります。
LSTMを使用した言語モデル
ここで実装される言語モデルは前の章とほぼ同じです。唯一の違いは、前の章では Time RNN 層が使用されていたのに対し、今回は Time LSTM 層が使用されることです。
RNNLM のさらなる改善
LSTM層の多層化
LSTM 層を深くする (複数の LSTM 層を積み重ねる) と、多くの場合うまく機能します。
レイヤーは何層が適切ですか?
レイヤー数はハイパーパラメーターであるため、解決する問題の複雑さと提供できるトレーニング データのサイズに基づいて決定する必要があります。
PTB データセットで言語モデルを学習する場合、LSTM 層の数が 2 ~ 4 である場合に、より良い結果が得られます。
Google 翻訳で使用される GNMT モデルは、LSTM の 8 層のネットワークに重ねられます。
ドロップアウトに基づいてオーバーフィッティングを抑制する
深さを深くすることで、より表現力豊かなモデルを作成できますが、そのようなモデルはオーバーフィッティングに悩まされることがよくあります。さらに悪いことに、RNN は従来のフィードフォワード ニューラル ネットワークよりも過学習しやすいため、RNN の過学習対策は非常に重要です。
対策
トレーニングデータを追加する
モデルの複雑さを軽減する
正則化
ドロップアウト
ドロップアウト
Dropout はニューロンのサブセットをランダムに選択し、それらを無視して信号の転送を停止します。
ドロップアウトレイヤー挿入位置
通常のドロップアウト
エラー構造
Dropout を時系列方向に挿入すると、モデルが学習するにつれて時間の経過とともに情報が徐々に失われます。
正しい構造
ドロップアウトレイヤーを垂直方向に挿入
バリエーションドロップアウト
同じレイヤーのドロップアウト間でマスクを共有することで、マスクが「固定」されます。このように、情報の損失方法も「固定」されるため、通常の Dropout で発生する指数関数的な情報損失を回避できます。
重量分担
Weight tyingは直訳すると「体重縛り」となります。
Embedding レイヤーと Affine レイヤーの重みをバインド (共有) するコツは、重みの共有です。これら 2 つの層間で重みを共有することにより、学習されるパラメータの数を大幅に減らすことができます。これに加えて、精度も向上します。
RNNLM の実装の改善
フロンティア研究
RNNに基づいてテキストを生成する
完璧な絶望が存在しないのと同じように、完璧な記事などというものは存在しません。 ——村上春樹『風の歌を聴け』
言語モデルを使用してテキストを生成する
次の新しい単語を生成する方法
最も確率の高い単語を選択し、結果は一意に決定されます
確率が高い単語は選択されやすく、確率が低い単語は選択されにくい。
テキスト生成の実装
より良いテキスト生成
より良い言語モデルを使用する
seq2seq モデル
Seq2Seq (シーケンス間、シーケンス間モデル)
時系列データを他の時系列データに変換するためのモデル
seq2seqの原理
このモデルには、エンコーダとデコーダの 2 つのモジュールがあります。エンコーダは入力データをエンコードし、デコーダはエンコードされたデータをデコードします。
seq2seq は、エンコーダ LSTM とデコーダ LSTM の 2 つの LSTM 層で構成されます。
LSTM の隠れ状態 h は固定長ベクトルです。前のセクションのモデルとの違いは、LSTM 層がベクトル h を受け取ることです。この 1 つの小さな変更により、通常の言語モデルが翻訳を処理できるデコーダーに進化することができました。
時系列データ変換の簡単な試み
seq2seq に加算計算を実行させようとしています
可変長時系列データ
充填
元のデータに無効な(意味のない)データを入力します。 そしてデータ長を揃えます。
パディングを使用する場合は、パディング固有の処理を seq2seq に追加する必要があります。
パディングがデコーダに入力される場合、その損失は計算されるべきではありません(これは、損失マスク機能を備えたソフトマックスをレイヤーに追加することで解決できます)
エンコーダで入力パディングを行う場合、LSTM 層は直前の入力をそのまま出力する必要があります。
追加データセット
seq2seqの実装
seq2seq の改善
入力データを反転する
多くの場合、この手法を使用すると学習がより速く進み、最終的な精度が向上します。
直感的には、データを反転すると、勾配の伝播がよりスムーズになり、より効果的になります。
のぞき見
ヘルメットを使用したエンコーダは Peeky Decoder と呼ばれ、Peeky Decoder を使用した seq2seq は Peeky seq2seq と呼ばれます。
エンコーダは入力文を固定長ベクトル h に変換します。これには、デコーダが必要とするすべての情報が集中します。これがデコーダの唯一の情報源です。
重要な情報が集中しているエンコーダの出力 h は、デコーダの他の層に割り当てることができます。
2 つのベクトルが LSTM 層と Affine 層に同時に入力され、実際には 2 つのベクトルの連結を表します。
seq2seqの応用
機械翻訳: 「ある言語のテキスト」を「別の言語のテキスト」に変換します。
自動要約: 「長いテキスト」を「短い要約」に変換します。
質疑応答システム:「質問」を「回答」に変換します。
メール自動返信:「受信メール本文」を「返信本文」に変換
チャットボット
アルゴリズム学習
自動画像説明
注意
注意がすべてです。 ——バスワニ氏の論文のタイトル
アテンションは、間違いなく近年のディープラーニングの分野で最も重要なテクノロジーの 1 つです。この章の目的は、テンションの構造をコードレベルで理解し、それを実際の問題に適用してその素晴らしい効果を体験することです。
注意構造
seq2seq の問題
seq2seq ではエンコーダを使用して時系列データをエンコードし、エンコードされた情報がデコーダに渡されます。この時点で、エンコーダーの出力は固定長ベクトルです。
固定長ベクトルとは、入力ステートメントの長さに関係なく (長さに関係なく)、同じ長さのベクトルに変換されることを意味します。
エンコーダの改善
エンコーダーの出力の長さは、入力テキストの長さに応じて変更される必要があります。
エンコーダーは左から右に処理するため、厳密に言えば、「cat」ベクトルには「我的人」、「は」、「猫」の 3 つの単語の情報だけが含まれます。全体のバランスを考えると、「猫」という文字の周りにまんべんなく情報を盛り込むのがベストです。この場合、時系列データを双方向から処理する双方向 RNN (または双方向 LSTM) がより効果的です。
デコーダの改善
以前は、エンコーダの LSTM 層の「最後の」隠れ状態を、デコーダの LSTM 層の「初期」の隠れ状態に置きました。
前の章のデコーダーは、エンコーダーの LSTM 層の最後の隠れ状態のみを使用しました。 hs を使用する場合、最後の行のみが抽出され、デコーダに渡されます。次に、すべての hs を使用できるようにデコーダを改良します。
特定の単語 (または単語のセット) に注目し、その単語を随時変換することで、seq2seq は「入力と出力のどの単語がどの単語に関連しているか」を学習することができます。
例
私の世代[わがはい] = 私
猫[ねこ] = 猫
多くの研究では、「cat =cat」などの単語の対応関係の知識が活用されています。このような単語(またはフレーズ)間の対応関係を示す情報をアライメントと呼びます。これまでアライメントは主に手動で行われていましたが、今回紹介するアテンション技術により、アライメントの考え方を自動的に seq2seq に導入することに成功しました。これも「手作業」から「機械による自動化」への進化です。
構造変化
計算方法
「選択」という操作を微分可能な操作に置き換えることはできますか? 「単一選択」ではなく「すべて選択」の方が良いでしょう。各単語の重要度(貢献度)を表す重みを個別に計算します。
a 確率分布と同様に、各要素は 0.0 から 1.0 までのスカラーであり、合計は 1 になります。次に、各単語の重要度を表す重みと単語ベクトル hs の重み付き和を計算し、対象ベクトルを求めます。
シーケンス データを処理するとき、ネットワークは入力シーケンスの重要な部分にさらに注意を払い、重要でない部分を無視する必要があります。これにより、モデルがより適切に支払われるように、さまざまな部分の重みを学習することで入力シーケンスの重要な部分に重みを付けます。出力関連の情報には細心の注意を払ってください。 アテンション メカニズムの鍵は、入力シーケンス内の各位置の重みを動的に計算するメカニズムを導入することです。これにより、タイム ステップごとに、入力シーケンスのさまざまな部分が重み付けされて合計され、現在のタイム ステップの出力が得られます。 。各出力を生成するとき、デコーダーは入力シーケンスのさまざまな部分に異なる注意を払い、モデルが入力シーケンス内の重要な情報にさらに焦点を当てることができるようにします。
重みaの学習
私たちの目標は、この h が hs の個々の単語ベクトルにどの程度「似ているか」を数値で表現することです。
ここでは最も単純なベクトル内積を使用します。
ベクトルの類似性を計算するにはいくつかの方法があります。内積に加えて、スコアを出力するために小さなニューラル ネットワークを使用する実践もあります。
次に、古い Softmax 関数を使用して s を正規化します。
統合する
注意を払った seq2seq の実装
注目の評価
seq2seqの効果を「日付形式変換」問題に注目して確認してみました
日付形式変換の問題
seq2seq を注意して学習する
注意力の可視化
注意に関するその他のトピック
双方向RNN
全体のバランスを考えると、「猫」という単語を中心とした情報がより均等にベクトルに含まれるようにしたいと考えます。
双方向 LSTM は、前の LSTM 層の上に逆方向に処理する LSTM 層を追加します。
2 つの LSTM 層の隠れ状態を各瞬間に結合し、それを最終的な隠れ状態ベクトルとして使用します (結合に加えて、「合計」や「平均」などもできます)。
アテンションレイヤーの使い方
アテンション層の出力(コンテキストベクトル)は、次の瞬間に LSTM 層の入力に接続されます。この構造を通じて、LSTM 層はコンテキスト ベクトルの情報を使用することができます。対照的に、私たちが実装したモデルは、アフィン層のコンテキスト ベクトルを使用します。
seq2seqとスキップ接続の深化
RNN層を深化させる
LSTM層の3層を使用した注意付きseq2seq
残りの接続
残りの接続の接続点で、2 つの出力が追加されます。
逆伝播時に加算により勾配が「そのまま」伝播されるため、残りの接続の勾配は何の影響もなく前の層に伝播できます。これにより、層を深くしても勾配が消失(または勾配爆発)することなく正常に勾配が伝播し、学習がスムーズに進むことができる。
注意の適用
GNMT
機械翻訳の歴史
ルールベースの翻訳
ユースケースベースの翻訳
統計に基づいた翻訳
ニューラル機械翻訳
Google 翻訳は 2016 年から実際のサービスにニューラル機械翻訳を使用しています。 GNMTと呼ばれる機械翻訳システム
GNMT は大量のデータとコンピューティング リソースを必要とします。 GNMT は、約 100 個の GPU で 6 日間学習された大量のトレーニング データ (1 つのモデル) を使用します。また、GNMTでは8つのモデルを並列学習できるアンサンブル学習や強化学習などの技術をベースに、さらなる精度の向上にも努めています。
変成器
RNN は可変長の時系列データを適切に処理できます。ただし、RNN には並列処理の問題などの欠点もあります。
RNNは直前の計算結果に基づいて段階的に計算する必要があるため、時間方向に並列してRNNを計算することは(基本的に)不可能です。 GPUを使った並列コンピューティング環境で深層学習を行う場合、これが大きなボトルネックになるため、RNNを避けたいという動機があります。
Transformer は RNN を使用せず、処理にアテンションを使用します。このトランスフォーマーについて簡単に見てみましょう。
自己注意
Transformer は、セルフ アテンション技術を使用するアテンションに基づいており、これが重要です。 Self-Attentionとは直訳すると「自分自身に対する注意」、つまり時系列データに基づいた注意であり、時系列データの各要素と他の要素との関係を観察することを目的としています。
1 つの隠れ層と活性化関数 ReLU を備えた完全に接続されたニューラル ネットワークを使用します。また、図中のNxは、灰色の背景で囲まれた要素がN回積層されていることを意味します。
NTM
NTM (ニューラルチューリングマシン)
ニューラル ネットワークは、外部ストレージ デバイスを使用して追加機能を取得することもできます。
アテンションに基づいて、エンコーダとデコーダはコンピュータの「メモリ操作」を実装します。言い換えると、これは、エンコーダが必要な情報をメモリに書き込み、デコーダがメモリから読み取ると解釈できます。 必要な情報を取得します。
コンピュータのメモリ操作を模倣するために、NTM のメモリ操作は 2 つのアテンションを使用します。
コンテンツベースのアテンションは、以前紹介したアテンションと同じで、特定のベクトル (クエリ ベクトル) に類似したベクトルをメモリから検索するために使用されます。
位置ベースのアテンションは、直前にフォーカスされていたメモリ アドレス (メモリ内の各位置の重み) から前後に移動するために使用されます。ここでは、その技術的な詳細については説明を省略します。これは 1 次元の畳み込み演算によって実現できます。記憶位置に基づく移動機能により、「(1つの記憶番地を)進みながら読み込む」というコンピュータ特有の動作を再現できます。
NTM は、長期記憶の問題や並べ替え問題 (数字を大きいものから小さいものへ並べる) などを解決することに成功しました。
ネットワークの最適化と正規化
情報の欠如を補う数学的トリックはありません [コルネリアス・ランチョス]
2つの大きな困難
最適化
最適化が難しく、計算量が多い
一般化問題
フィット力が強すぎてオーバーフィットしやすい。
ネットワークの最適化
ネットワーク最適化の難しさ
ネットワーク構造の多様性
一般的な最適化手法を見つけるのは困難です。最適化手法が異なると、ネットワーク構造が異なると比較的大きな違いが生じます。
低次元空間の難しさ
初期化パラメータの選択方法
局所最適からの脱出
高次元空間の難しさ
初期化パラメータの選択方法
鞍部からの脱出方法
ある次元ではそれは最高点であり、他の次元ではそれは最低点です
平底
ディープ ニューラル ネットワークには多くのパラメーターがあり、ある程度の冗長性があるため、各単一パラメーターが最終的な損失に与える影響は比較的小さくなります。
極小値に引っかかる
最適化
勾配降下法の種類
バッチ勾配降下法
確率的勾配降下法
ミニバッチ勾配降下法
勾配降下法の場合、反復ごとにトレーニング データ全体の勾配を計算するには、より多くのコンピューティング リソースが必要になります。さらに、大規模なトレーニング セット内のデータは多くの場合非常に冗長であるため、トレーニング セット全体にわたる勾配を計算する必要はありません。
学習率の低下
学習率は、収束速度を確保するために最初は大きく保つ必要があり、最適点近くに収束するときは前後の発振を避けるために小さくする必要があります。
タイプ
時間減衰を逆転させる
指数関数的減衰
自然指数関数的減衰
β は減衰率で、通常は 0.96 の値を取ります。
AdaGrad、RMSprop、AdaDelta など、学習率を適応的に調整する方法もあります。
アダグラッド法
学習率を高める効果的な手法として、学習が進むにつれて学習率を徐々に下げる学習率減衰と呼ばれる手法があります。
AdaGrad はこの考え方をさらに推し進め、学習を同時に行いながらパラメータの各要素の学習率を適切に調整します。
Ada は、「適切な」を意味する英語の Adaptive に由来します。
前回の SGD と同様に、W は更新される重みパラメータ、偏導関数は勾配、n は学習率を表します。
ただし、以前のすべての勾配値の二乗の合計を格納する新しい変数 h が表示されます。したがって、学習が深くなるほど、更新振幅は小さくなります。
RMSProp メソッド
無限に学習すると更新量が0になる
RMSProp メソッドは、過去のすべての勾配を均等に加算するのではなく、加算操作を実行するときに過去の勾配を徐々に忘れて、新しい勾配に関するより多くの情報を反映します。
専門的に言えば、この操作は「指数移動平均」と呼ばれ、過去の勾配のスケールを指数関数的に縮小します。
勾配方向の最適化
運動量法
ミニバッチ勾配降下法では、毎回選択されるサンプルの数が比較的少ない場合、損失は振動的に減少します。
パラメータ更新の方向として、現時点の勾配ではなく、最新の期間の平均勾配を使用します。
モメンタム法とも呼ばれます
SGDのデメリット
f(x,y)=(1/20)*x^2 y^2
SGD に基づいて最適化された更新パス: 最小値 (0, 0) に向かってジグザグに移動し、効率が低い
改善する方法
前回の SGD と同様に、W は更新される重みパラメータ、偏導関数は勾配、n は学習率を表します。
しかし、新しい変数 v が現れます。これは物理速度に対応し、物体に勾配方向にかかる力として理解できます。
アダムメソッド
運動量はボールの中で転がるボールの物理法則に従って動き、AdaGrad はパラメータの各要素に応じて更新ペースを適切に調整します。それらを組み合わせるのがアダムのアイデアです
すべての問題に対してうまく機能する方法は (現時点では) ありません。これら4つの手法にはそれぞれ特徴があり、それぞれ得意な問題と苦手な問題があります。
勾配カットオフ
急に勾配が大きくなった場合、大きな勾配でパラメータを更新すると最適点から遠ざかってしまいます。
勾配の係数が特定のしきい値より大きい場合、勾配は切り捨てられます。
勾配の係数をある間隔に制限し、勾配の係数がこの間隔より小さいか大きい場合に切り捨てます。
タイプ
値で切り捨てる
gt = max(min(gt, b), a)。
金型に合わせて切り詰める
パラメータの初期化
ガウス分布の初期化
ガウス初期化方法は、最も単純な初期化方法です。パラメータは、固定平均 (0 など) と固定分散 (0.01 など) のガウス分布からランダムに初期化されます。
ニューロンの入力接続の数が n(in) の場合、その入力接続の重みは N(0,sqrt(1/nin)) のガウス分布で初期化されるように設定できます。
出力接続数 nout も考慮する場合、N(0,sqrt(2/(nin noout))) のガウス分布に従って初期化できます。
均一に分散された初期化
一様分布の初期化では、一様分布を使用して、指定された間隔 [-r, r] 内のパラメーターを初期化します。ハイパーパラメータ r の設定は、ニューロンの接続数に応じて適応的に調整することもできます。
アクティベーション機能の種類
ロジスティック関数
タン
ザビエルの初期値
Xavier Glorot らの論文で推奨されている重みの初期値を使用してみました。
前の層のノード数が n の場合、初期値では標準偏差が (1/sqrt(n)) のガウス分布が使用されます。
ReLU 重みの初期値
活性化関数が ReLU を使用する場合、通常は ReLU 専用の初期値を使用することが推奨されます。これは Kaiming He らによって推奨されている初期値であり、「He 初期値」とも呼ばれます。
現在の層のノード数が n の場合、He の初期値は標準偏差が (2/sqrt(n)) のガウス分布を使用します。
データの前処理
異なる単位
各次元特徴のソースと測定単位が異なると、これらの特徴値の分布範囲が大きく異なります。異なるサンプル間のユークリッド距離を計算する場合、値の範囲が広い特徴が支配的な役割を果たします。
スケーリング正規化
各特徴の値の範囲は、スケーリングによって [0, 1] または [−1, 1] に正規化されます。
標準正規化
Zスコア正規化とも呼ばれます
各次元の特徴は、標準正規分布 (平均は 0、標準偏差は 1) に準拠するように処理されます。
データの冗長性
入力データが白色化された後、特徴間の相関は低く、すべての特徴の分散は同じになります。
美白を実現する主な方法の 1 つは、主成分分析を使用して成分間の相関を除去することです。
レイヤーごとの正規化
確率的勾配降下法を使用してネットワークをトレーニングする場合、パラメーターが更新されるたびに、ネットワークの中央にある各層への入力の分布が変化します。層が深くなるほど、その入力の分布はより明らかに変化します。
バッチ正規化
バッチ正規化、BN 法とも呼ばれます。
各層に適切な広がりを持たせるために、活性値の分布は「強制的に」調整されます。
データ分布の平均が 0、分散が 1 になるように正則化を実行します。
ニューラル ネットワーク内の中間層はどれも正規化できます。
アドバンテージ
学習を迅速に行うことができる (学習率を高めることができる)
初期値への依存度が低い(初期値にあまり依存しない)
オーバーフィッティングの抑制 (ドロップアウトの必要性の削減など)
バッチノルムレイヤー
アフィン -> バッチ ノルム -> ReLU
レイヤーの正規化
バッチ正規化の制限
バッチ正規化は、中間層の単一ニューロンに対する正規化操作であるため、ミニバッチ サンプルの数が小さすぎてはなりません。小さすぎると、単一ニューロンの統計情報を計算することが困難になります。
リカレント ニューラル ネットワークなどのニューラル ネットワークでニューロンの正味入力の分布が動的に変化する場合、バッチ正規化操作は適用できません。
層の正規化は、中間層のすべてのニューロンを正規化します。
バッチ正規化は畳み込みニューラル ネットワーク (CNN) では非常に効果的ですが、レイヤー正規化はリカレント ニューラル ネットワーク (RNN) および Transformer ネットワークでより一般的です。
ハイパーパラメータの最適化
構成
ネットワーク構造
ニューロン間の接続
レイヤー数
層あたりのニューロンの数
活性化関数の種類
最適化パラメータ
ネットワーク最適化手法
学習率
小規模バッチのサンプルサイズ
正則化係数
検証データ(検証セット)
テストデータを使用してハイパーパラメータのパフォーマンスを評価できない
ハイパーパラメータ値の「良さ」を確認するためにテスト データを使用すると、テスト データにのみ適合するようにハイパーパラメータ値が調整されます。
トレーニング データはパラメーターの学習 (重みとバイアス) に使用され、検証データはハイパーパラメーターのパフォーマンス評価に使用されます。汎化能力を確認するために、テストデータは最後に使用する必要があります(理想的には1回だけ)
最適化
グリッド検索
ハイパーパラメータのすべての組み合わせを試して、適切なパラメータをターゲットにします グループのハイパーパラメータ設定のメソッド。
いくつかの「経験」値を選択します。たとえば、学習率 α を設定できます。 α ∈ {0.01, 0.1, 0.5, 1.0}。
ランダム検索
ハイパーパラメータの範囲を設定し、設定されたハイパーパラメータの範囲からランダムにサンプリングします。
検証データを通じて認識精度を評価します (ただし、エポックを非常に小さく設定します)
上記を繰り返し(100回など)、認識精度の結果に応じてハイパーパラメータの範囲を絞り込みます。
ベイズ最適化
動的なリソース割り当て
ネットワークの正規化
目的: 過学習を抑制するため
体重減少
重み減衰は、オーバーフィッティングを抑制するためによく使用される方法です。この方法では、学習プロセス中に大きな重みにペナルティが課されます。
簡単に言うと、損失関数は次のようになります。
λ は正則化の強度を制御するハイパーパラメータです
破棄メソッド
ドロップアウト方式
ネットワークモデルが非常に複雑になると、重み減衰だけで対応するのは困難になります。
学習プロセス中にニューロンをランダムに削除する方法では、毎回ニューロンをランダムに破棄することが選択されます。最も簡単な方法は、固定確率 p を設定することです。各ニューロンについて、それを保持するかどうかを決定する確率 p があります。
データ増強
回転、反転、拡大縮小、移動、ノイズの追加
ラベルのスムージング
モデルの過剰適合を避けるために出力ラベルにノイズを追加します
モデル独立学習法
アンサンブル学習
複数のモデルを一定の戦略で統合し、グループ意思決定を通じて意思決定の精度を向上させます。アンサンブル学習における主な問題は、複数のモデルをどのように統合するかです。より一般的に使用される統合戦略には、直接平均、加重平均などが含まれます。
自主トレーニングと共同トレーニング
すべては半教師あり学習に属します
セルフトレーニング
自己トレーニングでは、最初にラベル付きデータを使用してモデルをトレーニングし、このモデルを使用してラベルのないサンプルのラベルを予測し、予測信頼度が比較的高いサンプルとその予測された疑似ラベルをトレーニング セットに追加してから、新しいモデルを再トレーニングします。そしてこのプロセスを繰り返し続けます。
共同訓練
コトレーニングはセルフトレーニングの改良された方法です
異なるビューに基づく 2 つの分類子は相互に促進します。多くのデータには、比較的独立したさまざまな視点があります。
さまざまな観点の条件付き独立性により、さまざまな観点でトレーニングされたモデルは、さまざまな観点から問題を理解することと同等であり、一定の補完性があります。協調トレーニングは、この相補性を利用して自己トレーニングを行う方法です。まず、2 つのモデル f1 と f2 が異なる観点に従ってトレーニング セットでトレーニングされ、次に f1 と f2 を使用してラベルのないデータ セットで予測が行われ、予測信頼度が比較的高いサンプルが選択されてトレーニング セットに追加されます。 2 つの異なる視点がモデルを再トレーニングし、このプロセスを繰り返します。
マルチタスク学習
一般的な機械学習モデルは、手書きの数字認識やオブジェクト検出など、単一の特定のタスクを目的としています。さまざまなタスクのモデルは、それぞれのトレーニング セットで個別に学習されます。
2 つのタスクが関連している場合、それらの間で共有される知識が存在し、この知識は両方のタスクに役立ちます。これらの共有知識は、表現 (特徴)、モデル パラメーター、学習アルゴリズムなどです。
タイプ
転移学習
すでに大量の学習データを持っている関連タスクがある場合、その学習データの分布は対象タスクとは異なりますが、学習データの規模が比較的大きいため、ある程度の学習はできると考えられます。そこから一般化できる知識があれば、この知識はターゲットのタスクに役立ち、何らかの助けになります。関連するタスクの学習データに含まれる一般化可能な知識を、どのようにして対象タスクに伝達するかが転移学習で解決すべき課題となります。
転移学習とは、ソース ドメイン (ソース ドメイン) DS で学習した知識を使用して、ターゲット ドメイン (ターゲット ドメイン) DT の学習タスクを支援する、2 つの異なる分野間の知識移転のプロセスを指します。一般に、ソース ドメインのトレーニング サンプルの数は、ターゲット ドメインのトレーニング サンプルの数よりもはるかに多くなります。
分類
帰納的転移学習
モデルは、予期されるリスク (つまり、実際のデータ分布でのエラー率) を最小限に抑えるトレーニング データセットで学習されます。
転移学習の導出
特定のテストセットで誤差を最小限に抑えるモデルを学習する
ファインチューニングは転移学習の応用手法です。これは通常、新しいタスク固有のデータセットを使用して、すでにトレーニングされたモデルに基づいて追加のトレーニングを実行し、特定のタスクにおけるモデルのパフォーマンスを向上させることを指します。微調整の目的は、大規模データで事前トレーニングされたモデルによって学習された一般知識を使用して、特定のタスクの学習プロセスを加速および最適化することです。
生涯学習
質問
トレーニングが完了すると、モデルは固定されたままになり、反復的に更新されなくなります。
モデルが多くの異なるタスクを同時に成功させることは依然として非常に困難です。
生涯学習は、継続学習とも呼ばれ、人間と同じように継続的に学習する能力を指します。歴史的な課題で学んだ経験と知識を使用して、絶えず出現する新しい課題を学習するのに役立ちます。これらの経験と知識は継続的に蓄積され、変化することはありません。 新しいタスクを実行し、古い知識を忘れてください。
生涯学習では、生涯学習アルゴリズムが過去のタスク T1、T2、…、Tm でモデルを学習していると仮定し、新しいタスク Tm1 が出現すると、このアルゴリズムは過去に学習したタスクに基づいてモデルを学習することができます。 m 個のタスクに関する知識を蓄積しながら、m 1 番目のタスクを支援するための知識を追加します。
この設定は帰納的転移学習に非常に似ていますが、帰納的転移学習の目標は、知識の蓄積を気にせずにターゲット タスクのパフォーマンスを最適化することです。生涯学習の目標は、継続的な学習と知識の蓄積です。さらに、マルチタスク学習とは異なり、生涯学習ではすべてのタスクを同時に学習する必要はありません。
メタ学習
ノーフリーランチ定理によれば、すべてのタスクに対して効果的な万能学習アルゴリズムは存在しません。したがって、機械学習アルゴリズムを使用して特定のタスクを実装する場合、通常は「問題について話し合って」、特定のタスクに基づいて適切なモデル、損失関数、最適化アルゴリズム、ハイパーパラメーターを選択する必要があります。
自分自身の学習方法を動的に調整する機能はメタ学習と呼ばれ、学習の学習とも呼ばれます。
メタ学習に関連するもう 1 つの機械学習の問題は、小規模サンプル学習です。
代表的な 2 つのメタ学習手法
オプティマイザーベースのメタ学習
異なる最適化アルゴリズムの違いは、パラメーターを更新するためのルールが異なることにあります。したがって、自然なメタ学習は、パラメーターを更新するためのルールを自動的に学習すること、つまり、別のニューラル ネットワーク (リカレント ニューラルなど) を通じて勾配降下プロセスをモデル化することです。通信網)。
モデルに依存しないメタ学習
これは、モデルに依存せず、タスクに依存しない単純なメタ学習アルゴリズムです。