深属学習

TanhExpの活性化関数

  目次 1. TanhExp活性化関数の概要 1.1 TanhExp活性化関数とは 1.2 TanhExp関数 2. 実験 2.1 ライブラリインポート 2.2 データ読み込み 2.3 データ加工 2.4 TanhExpの活性化関数を作成 2.5 Reluの活性化関数を作成 2.6 まとめ   記事:活性化関数のまとめ   1. TanhExp活性化関数の概要 1.1 TanhExp活性化関数とは TanhExpはTanh Exponential Activation Functionの略称です。名前からわかるようにtanhとexpを使います。TanhExpの定義はf(x) = x tanh(e^x)である。様々なデータセットやネットワークモデルに対してTanhExpのシンプルさ、効率性、ロバスト性を実証し、TanhExpは収束速度と精度の両方で同等のものを凌駕することを示した。また、ノイズを追加したり、データセットを変更したりしても、TanhExpの挙動は安定している。ネットワークのサイズを大きくしなくても、少数の学習エポックと余分なパラメータを追加することなく、TanhExpによって軽量ニューラルネットワークの能力を向上させることができることを示す。 論文:TanhExp: A Smooth Activation Function with High Convergence Speed for Lightweight Neural Networks https://arxiv.org/abs/2003.09855   1.2 TanhExp関数 def tanhexp(x): return x * tf.math.tanh(tf.math.exp(x)) …

TanhExpの活性化関数 Read More »

Rangerの最適化アルゴリズムの解説

  目次 1 Ranger最適化アルゴリズムの概要 1.1 Ranger最適化アルゴリズムとは 2. 実験 2.1 データロード 2.2 データ前処理 2.3 Ranger最適化アルゴリズムのモデル作成 2.4 Adam最適化アルゴリズムのモデル作成 2.5 まとめ   記事:最適化アルゴリズムのまとめ   1 Ranger最適化アルゴリズムの概要 1.1 Ranger最適化アルゴリズムとは Ranger最適化アルゴリズムとは、LookaheadとRADamの統合です。 Lookaheadという名前のとおり,過去の勾配を使うのではなく,先を見据えた更新則を導入しています。具体的には,通常のoptimizer (SGDやAdamなど) によって重みパラメータを更新します。これらのパラメータを “fast weights” を呼びます。これらの “fast weights” を参考に、”slow weights”と呼ばれる,実際に評価に用いる重みパラメータを更新します。 つまり、これまでのoptimizerは”fast weights”の更新で終わっていましたが、Lookahead optimizerはこの更新を参考にした上で本当のパラメータ (slow weights) を更新するというわけです。 Rectified Adam、またはRAdamは、適応学習率の分散を修正するための項を導入するAdam確率オプティマイザーの変形です。 それは、Adam最適化で悪かった収束問題を高速化しています。 論文:Lookahead Optimizer: k steps forward, 1 step back https://arxiv.org/abs/1907.08610v1 論文:RAdam …

Rangerの最適化アルゴリズムの解説 Read More »

AdaDeltaの最適化アルゴリズム

  目次 1. AdaDelta最適化アルゴリズムの概要 1.1 AdaDelta最適化アルゴリズムとは 1.2 AdaDelta関数 2. 実験 2.1 ライブラリインポート 2.2 データ読み込み 2.3 データ加工 2.4 AdaDeltaの最適化アルゴリズムを作成 2.3 Adamの最適化アルゴリズムを作成 2.5 まとめ   記事:最適化アルゴリズムのまとめ   1. AdaDelta最適化アルゴリズムの概要 1.1 AdaDelta最適化アルゴリズムとは   AdadeltaはAdagradの拡張版の最適化アルゴリズムです。 過去のすべての勾配を累積するのではなく、勾配更新の固定移動ウィンドウに基づいて、単調に減少する学習率を下げていくような最適化アルゴリズムです。複数の値を保持するのではないのでAdagradに比べるとメモリー効率も良いと言われています。   ADAGRADメソッドでは、分母はトレーニングの開始から始まる各反復からの二乗勾配を累積します。 各項が正であるため、この累積合計はトレーニング全体を通じて増加し続け、各次元の学習率を効果的に縮小します。 何度もイテレーションの繰り返した後、学習率は非常に小さくなります。   下記の計算式になります。注意点としてはステップ5で差分を取っています。これは、無次元かと呼ばれる操作で学習していきます。この無次元かと呼ばれる特徴を用いているため、他のステップでも学習率を設定しないアルゴリズムです。 論文:ADADELTA: An Adaptive Learning Rate Method https://arxiv.org/abs/1212.5701   1.2 AdaDelta関数   Tensorflow tf.keras.optimizers.Adadelta( learning_rate=0.001, rho=0.95, epsilon=1e-07, name=’Adadelta’, …

AdaDeltaの最適化アルゴリズム Read More »

SELUの活性化関数

  目次 1. SELU活性化関数の概要 1.1 SELU活性化関数とは 1.2 SELU定義 1.3 SELUの特徴 2. 実験 2.1 データロード 2.2 データ前処理 2.3 SELU活性化関数のモデル作成 2.4 RELU活性化関数のモデル作成 2.5 まとめ 記事:活性化関数のまとめ   1. SELU活性化関数の概要 1.1 SELU活性化関数とは SELUはScaled Exponential Linear Unitsの英略称で、活性化関数の一つです。 SELUは勾配消失問題(Vanishing Gradient)を対応できます。何故ならばSELUは「0」を基点として、入力値が0以下なら「0」~「-λα」の間の値を、0より上なら「入力値をλ倍した値」を返します。ReLUおよびELUの拡張版です。 論文:https://arxiv.org/pdf/1706.02515.pdf Tensorflow: https://www.tensorflow.org/api_docs/python/tf/nn/selu PyTorch: https://pytorch.org/docs/stable/generated/torch.nn.SELU.html   1.2 SELU定義 xが入力データで、f(x)が出力結果である。 x ≦ 0の場合は、f(x)=λ × α × (ex-1)となる x > 0の場合は、f(x)=λ × xとなる。 …

SELUの活性化関数 Read More »

GELUの活性化関数の解説

  目次 1. GELU活性化関数の概要 1.1 GELU活性化関数とは 1.2 GELU定義 1.3 GELUの違い 2. 実験 2.1 データロード 2.2 データ前処理 2.3 GELU活性化関数のモデル作成 2.4 ReLU活性化関数のモデル作成 2.5 まとめ 活性化関数のまとめ   1.  GELU活性化関数の概要 1.1 GELU活性化関数とは GELU活性化関数は、Gaussian Error Linear Unit functionsの略称です。GELUはOpenAI GPTやBERTなどの有名なモデルで使われている活性化関数です。 GELUはReLU、ELU、PReLUなどのアクティベーションにより、シグモイドよりも高速で優れたニューラルネットワークの収束が可能になったと言われています。コツとしては、Dropoutに似た要素を入れている事です。Dropoutとは、いくつかのアクティベーションに0をランダムに乗算することにより、モデルを頑強します。   1.2 GELU定義 Geluは以下のように定義されます。 Computes gaussian error linear: approximateがFalse場合は、 approximateがTrue場合は、 論文:https://arxiv.org/abs/1606.08415   1.3 GELUの違い GELUとReLUとELUは非凸(non-convex)、非単調(non-monotonic)関数ですが、GELUは正の領域で線形ではなく、曲率があります。 GELUは単調増加ではありません。 GELUは確率的な要素を加味しています(Dropout)。 ライブラリ: Tensorflow/Keras https://www.tensorflow.org/addons/api_docs/python/tfa/activations/gelu#returns …

GELUの活性化関数の解説 Read More »

Nadamの最適化アルゴリズム

目次 1. Nadam最適化アルゴリズムの概要 1.1 Nadam最適化アルゴリズムとは 1.2 TensorflowのNadam関数 2. 実験 2.1 ライブラリインポート 2.2 データ読み込み 2.3 データ加工 2.4 Nadamの最適化アルゴリズムを作成 2.3 Adamの最適化アルゴリズムを作成 2.5 まとめ   前回の記事は「最適化アルゴリズムのまとめ」を解説しました。今回の記事はNadamを解説と実験したいと思います。   1. Nadam 1.1 Nadam最適化アルゴリズムとは Nadam (Nesterov-accelerated Adaptive Moment Estimation)はAdamとNAGを組み合わせます。 このことにより、前のタイムステップmt-1の運動量ベクトルにおけるバイアス補正された推定値を置き換えるだけで、以前と同じようにネステロフ運動量を追加できます。 現在の運動量ベクトルmtのバイアス補正された推定値を使用するのが、Nadam更新ルールを取得します。 1.2 TensorflowのNadam関数 Tensorflowの詳細 tf.keras.optimizers.Nadam( learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07, name=’Nadam’, **kwargs )   Learning_rate テンソルまたは浮動小数点値。 学習率。   beta_1 浮動小数点値または定数浮動小数点テンソル。 一次モーメント推定の指数関数的減衰率。   …

Nadamの最適化アルゴリズム Read More »

深層学習の最適化アルゴリズムまとめ

目次 1. 最適化アルゴリズムとは 2. 最適化アルゴリズムのまとめ ・確率的勾配降下法(SGD) ・Adams ・Adamax ・Nadam ・AMSGrad ・AdamW 3.その他 AdaDelta, AdaGrad, A2GradExp, A2GradInc, A2GradUni, AccSGD, AdaBelief, AdaMod, Adafactor, Adahessian, AdamP, AggMo, Apollo, DiffGrad, RMSProp, AveragedOptimizerWrapper, ConditionalGradient, CyclicalLearningRate, ExponentialCyclicalLearningRate, extend_with_decoupled_weight_decay, LAMB, LazyAdam, Lookahead, MovingAverage, NovoGrad, ProximalAdagrad, RectifiedAdam, SGDW, SWA, Triangular2CyclicalLearningRate, TriangularCyclicalLearningRate, Yogi, AdaBound, AMSBound, Shampoo, SWATS, SGDP, Ranger, RangerQH, RangerVA, PID, QHAdam, QHM, …

深層学習の最適化アルゴリズムまとめ Read More »

活性化関数のまとめ

  目次 1 活性化関数とは 2. 活性化関数のまとめ – ReLu関数 – Leaky ReLU関数 – PReLU関数 – ELU関数 – sigmoid関数 – TanH関数 – softmax 関数 – GELU関数 – SELU関数 -その他まとめ 1 活性化関数とは 活性化関数は、(英: Activation functions)ニューラルネットワークの出力を決定する数式です。この関数はネットワーク内の各ニューロンに関連付けられており、各ニューロンの入力がアクティブ化(「起動」)するかどうかを決定します。各ニューロンの出力を1〜0または-1〜1の範囲に正規化するのにも役立ちます。 2. 活性化関数のまとめ   ReLu関数 ReLu関数(「ランプ」と読む)はRectified Linear Unitの略称で、ランプ関数もと呼ばれています。関数への入力値が0以下の場合には出力値が常に0、入力値が0より上の場合には出力値が入力値と同じ値となる関数です。 ReLUのメリット ・非常に迅速に収束するネットワークなので、処理が速いです。 ・勾配消失問題に強いです。勾配消失問題は層が深くなるにつれ勾配が消えてしまう。 ・linear関数のように見えますが、ReLUには微分関数があり、バックプロパゲーションが可能です。 ReLUのデメリット ・入力がゼロに近づくか、負の場合、関数の勾配はゼロになり、ネットワークはバックプロパゲーションを実行できず、学習できません。 ライブラリ: Tensorflow/Keras https://www.tensorflow.org/api_docs/python/tf/keras/activations/relu PyTorch https://pytorch.org/docs/stable/generated/torch.nn.ReLU.html   Leaky ReLU関数 Leaky ReLU関数はLeaky …

活性化関数のまとめ Read More »

KerasでのFReLU活性化関数

目次 1. FReLU 2. 実験 _2.1 データロード _2.2 FReLU活性化関数 _2.3 モデル作成 _2.4 モデル学習 _2.5 モデル評価 1. FReLU Megvii ResearchInstituteが新しい活性化関数成果を紹介します。活性化関数の分野での革新て画像分類タスクでReLUを大幅に超える新しい活性化関数ファンネル活性化(FReLU)が提案されています。 Megvii Research Instituteは、ごくわずかなspace conditionを追加することにより、ReLUとPReLUを2D活性化関数に拡張しました。 ReLUとPReLUは、それぞれy = max(x、0)とy = max(x、px)として表されますが、FReLUの形式はy = max(x、T(x))です。ここで、T(・)は2D spatial conditionです。   spatial conditions は、ピクセルレベルのモデリング機能を簡単な方法で実装し、従来の畳み込みによって複雑な視覚的レイアウトをキャプチャします。 最後に、ImageNetデータセット、COCOデータセット検出タスク、およびセマンティックセグメンテーションタスクで実験が行われ、視覚認識タスクにおけるFReLU活性化関数の大幅な改善と堅牢性が実証されました。   論文:FReLU: Flexible Rectified Linear Units for Improving Convolutional Neural Networks https://arxiv.org/abs/1706.08098 論文:Funnel Activation for Visual Recognition https://arxiv.org/abs/2007.11824 …

KerasでのFReLU活性化関数 Read More »

TensorFlowでのレコメンダー【tensorflow-recommenders (TFRS)】

2020年9月23日GoogleはTensorFlow Recommenders (TFRS)のレコメンデーション システムのパッケージを発表しました。この記事は、TensorFlowレコメンダーのパッケージを紹介したいと思います。 目次 1. TensorFlowのレコメンダーとは 2. tensorflow-recommendersの特徴 3. 実験 _3.1 データロード _3.2 レコメンデーションモデルの定義 _3.3 モデル評価の関数 _3.4 モデル学習 _3.5 モデル評価 1. TensorFlowのレコメンダーとは TensorFlow Recommendationsは、TensorFlowを使用してレコメンダーシステムモデルを構築するためのオープンソースライブラリです。 これは、レコメンダーシステムを構築するための完全なワークフロー(データの準備、モデルの定式化、トレーニング、評価、および展開)に役立ちます。 Kerasに基づいて構築されており、複雑なモデルを構築する柔軟性を提供しながら、穏やかな学習曲線を持つことを目的としています。 2. tensorflow-recommendersの特徴 ・柔軟な候補者指名モデルを構築して評価します。 ・アイテム、ユーザー、およびコンテキスト情報を推奨モデルに自由に組み込みます。 ・複数の推奨目標を共同で最適化するマルチタスクモデルをトレーニングします。 ・TensorFlow Servingを使用する事が出来ます。 3. 実験 環境:Google Colab データセット:MovieLens 100Kデータセット TFRSをインポート pip install -q tensorflow-recommenders pip install -q –upgrade tensorflow-datasets ライブラリインポート import os import pprint …

TensorFlowでのレコメンダー【tensorflow-recommenders (TFRS)】 Read More »