深属学習

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 »

画像分類・物体検出・セグメンテーションの比較

関連記事: U-net(画像セグメンテーション)の解説 先日の記事はU-net(画像セグメンテーション)の解説について解説しました。画像認識技術は画像分類・物体検出・セグメンテーションなどの技術があります。今回の記事は画像認識技術の違いを開設したいと思います。 目次 1. 画像認識(Image Recognition)とは 2. 画像分類(Image Classification)とは 3. 画像分類・物体位置特定(Image Classification・Localization)とは 4. 物体検出(Object Detection)とは 5. セグメンテーション(Segmentation) _5.1 セマンティック・セグメンテーション(Semantic Segmentation)とは _5.2 インスタント・セグメンテーション(Instant Segmentation)とは _5.3 パノプティック・セグメンテーション(Panoptic Segmentation)とは 6. まとめ 1. 画像認識(Image Recognition)とは 画像認識(Image Recognition)とは、画像や動画データから特徴をつかみ、対象物を識別するパターン認識技術の一つです。画像データから、対象物や、対象物の特徴(形状、寸法、数、明暗、色など)を抽出/分析/識別して認識検出する手法です。 コンピュータが画像認識を行うためには、前段階として、画像から対象物を抽出する必要があります。 下記の8ビットのグレースケール画像から、すべてのデジタル画像は0〜255の範囲の値を持つピクセルによって形成されます。0は黒、255は白です。 カラフルな画像の場合は、赤、緑、青の3つのマップと、0〜255の範囲のすべてのピクセルが含まれます。 画像認識を利用することで、顔認証システムや不審者検知、文字認識(OCR)、不適切画像の検出、 工場でのイレギュラー検知など幅広い分野で活用することができます。 今回の記事は物体検出の分野を中心にします。 2. 画像分類(Image Classification)とは 画像分類とは、機械学習やディープラーニングモデルで、画像を何らかの主題に基づき分類する処理方法です。いくつかの分類手法があります。教師あり学習では、ラベル付けされたデータセットを用いて、モデルを学習させていきます。 画像分類の結果は各クラスの予測信頼度です。 classes = [“dog”, “cat”, “nothing”] prediction = [ 0.8 , 0.1 …

画像分類・物体検出・セグメンテーションの比較 Read More »

U-netによる画像セグメンテーション(Image segmentation)の解説

         関連記事: OpenCVで顕著性検出(Saliency Detection) 先日の記事はOpenCVに入っている顕著性(Saliency)について解説しました。今回は、深層学習を用いた 教師有り学習で行う場合の画像Segmentationについて紹介していきます。 画像セグメンテーションとは、画像を複数の部分または領域に分割する処理です。画像全体や画像の一部の検出ではなくピクセル1つひとつに対して、そのピクセルが示す意味をラベル付けしていきます。 目次 1. U-Netの概要 2. 実験・コード __2.1 環境設定 __2.2 データ読み込み __2.3. データ前処理 __2.4. ネットワーク設定 __2.5. モデル学習 __2.6. 推論 1. U-Netの概要 U-Netとは U-Netは、ドイツのフライブルク大学( Freiburg)のコンピュータサイエンスが開発された生物医学的な画像セグメンテーション(物体がどこにあるか)のための全層畳み込みネットワーク (Fully Convolution Networkです。 ネットワークの構成は、縮小したネットワーク層を連続して反対において拡大の情報を付加していきます。ただしプーリング操作はアップサンプリングオペレーターに置き換えられます。 したがってこれらのレイヤーは出力の解像度を高めていきます。 後続の畳み込み層は、この情報に基づいて正確な出力を組み立てることを学習できます。つまり、畳み込まれた画像を decode する際に,encode で使った情報を活用している点が挙げられます。 左右対象でアルファベットの「U」に似ていることから、「U-net」と呼ばれているそうです。 2. 実験・コード 環境:Google Colab GPU データセット:オックスフォード大学のペットデータセット(37カテゴリー) モデル:U-netネットワーク モデル評価:Accuracy 2.1 環境設定 Tensoflowのサンプルデータをインストールします。 !pip install -q …

U-netによる画像セグメンテーション(Image segmentation)の解説 Read More »