admin2

Pythonでの魚眼フィルター

目次 1. 魚眼フィルター 2. 実験: _2.1 画像の読み込む _2.2 魚眼フィルターの関数 _2.3 結果   1. 魚眼フィルター(fisheye) 魚眼フィルターとは、魚眼レンズを通して見たかのように、イメージを歪めます。結果は、樽型歪曲という、超広角の歪みのエフェクトになります。下記のような画像の加工になります。 2. 実験: 環境: google colab 入力データ:ウィキメディアの画像データ モデル:魚眼フィルターの関数 Gil-Mor/iFish   Imageioのライブラリをインストールします。 !pip3 install numpy imageio   ライブラリをインポートします。 # 画像をロード import urllib import urllib.request import sys import fish import imutils from IPython.display import Image   fishのモジュールをインストールします。 #  Import scripts sys.path.append(”) py_src = “https://raw.githubusercontent.com/Gil-Mor/iFish/master/fish.py” py_file = ‘fish.py’ urllib.request.urlretrieve(py_src, py_file) import fish   2.1 画像の読み込む # 画像をロード img_src = “https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Chess_board_blank.svg/472px-Chess_board_blank.svg.png” …

Pythonでの魚眼フィルター 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, …

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

活性化関数のまとめ

目次 1 活性化関数とは 2. 活性化関数のまとめ – ReLu関数 – Leaky ReLU関数 – PReLU関数 – ELU関数 – sigmoid関数 – TanH関数 – softmax 関数 -その他まとめ 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 Rectified Linear Unitの略称で、ReLUの拡張版です。関数への入力値が0より下の場合には出力値が入力値をα倍した値(※αの値は基本的に0.01)、入力値が0以上の場合には出力値が入力値と同じ値となる関数です。 Leaky ReLUのメリット …

活性化関数のまとめ 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 »

RolexBoostの解説

目次 1. RolexBoostの概要 _1.1 RolexBoostとは _1.2 RolexBoostのアルゴリズム _1.3 RolexBoostのモデル評価 2. 実験 _2.1 環境準備 _2.2 データロード _2.3 RolexBoostモデル作成 _2.4 decision treeモデル作成 _2.5 モデル評価 1. RolexBoostの概要 1.1 RolexBoostとは モデルRolexBoostは Rotation-Flexible AdaBoostの略称で、新しい高い精度のアンサンブルのモデルです(RandomForestの亜種です)。RolexBoostはAdaBoostの拡張であり、違いは、適応損失関数を採用することでAdaBoostのパフォーマンスを向上させます。 ハイパーパラメーターは、指数損失の感度を制御します。これにより、各反復で最適な損失関数を特定できます。 RolexBoostは、柔軟な重み更新システムを使用して、範囲外のデータポイントに対してより堅牢な強力な分類器を構築します。 1.2 RolexBoostのアルゴリズム トレーニングデータDtr = {(x1、y1、…)、(xm、ym)}ここで、X = {x1、…、xm}およびY = {y1、…、ym}はそれぞれ説明変数、被説明変数に対応しています。 L:ブートストラップサブサンプルの数 S:部分空間の数 T:反復回数(基本分類子) K:指数損失関数の感度を制御するハイパーパラメーター トレーニングプロセス l = 1からLまで XをS個の部分空間にランダムに分割します:Xl、s s = 1からSの場合 ブートストラップXl、s:X’l、s PCAをX’l、sに適用し、主成分係数を抽出します:Rl、s   …

RolexBoostの解説 Read More »

異常検出アルゴリズム Isolation Forest

目次 1. Isolation Forestとは 2. scikit-learnのIsolationForest 3. 実験 _3.1 データ作成 _3.2 IsolationForestモデル作成 _3.3 モデル評価 1. Isolation Forestとは Isolation Forestは、他の一般的な外れ値検出方法とは異なり、通常のデータポイントをプロファイリングする代わりに、異常を明示的に識別(分類)します。 Isolation Forestは、他のランダムフォレストと同様に、決定木に基づいて構築されます。最初に特徴量をランダムに選択し、選択した特徴量の最小値と最大値の間でランダムな分割値を選択することによって、パーティションが作成されます。 異常データは通常の観測よりも頻度が低く、値の通常の点とは異なります。 そのため、このようなランダムパーティションを使用することで、必要な分割を減らして、ツリーのルートに近い場所でそれらを識別する必要があります。 距離が異常スコアを表し、距離が小さい=異常スコアが高いものです。異常な外れ値的データ点は、早い段階で(木の浅い段階で)分割される確率が高くでてきます。 論文:https://ieeexplore.ieee.org/document/4781136 異常スコアの計算式 異常な値をもつデータはたしかに早い段階でisolateされますが、その平均深さをそのままではなく、その木でふつうに二分探索する際の平均深さ c(n)c(n) で正規化しています。そのため異常スコアを(0,1)区間に収めているため扱いやすくなります。確率値s(x, n)が、1に近いと異常値、0.5に近いと正常値と見なせるようになります。 2. scikit-learnのIsolationForest https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.IsolationForest.html sklearn.ensemble.IsolationForest(*, n_estimators=100, max_samples=’auto’, contamination=’auto’, max_features=1.0, bootstrap=False, n_jobs=None, random_state=None, verbose=0, warm_start=False) n_estimatorsint, default=100 アンサンブル内の基本推定量の数   max_samples“auto”, int or float, default=”auto” 各基本推定量をトレーニングするためにXから抽出するサンプルの数。   contamination‘auto’ …

異常検出アルゴリズム Isolation Forest Read More »

ウォルラス演算子のユースケース(Walrus Operator:Use cases)

目次 ウォルラス演算子 Walrus Operatorとは ユースケース _2.1 If-Statementsからの値の再利用 _2.2 List Comprehensionsでのフィルタリング _2.3 While-Loopsでのデータ読み取り _2.4 計算されたの再利用   1. ウォルラス演算子 Walrus Operatorとは Python のバージョン 3.8 ( 2019 年 10 月リリース)はウォルラス演算子 (:=)というassignment expressions を導入されました。セイウチの牙に少し似ているため、「セイウチ演算子」(:=)とも呼ばれます。ウォルラス演算子はvarが「value」に設定され、同時に値が出力されます。   2. ユースケース 2.1 If-Statementsからの値の再利用 リストの数量を確認し、リストが指定された値を表示します。warningとリストの数量を出力します。 下記の例は、リストの値が5を超えると、warningとリストの数量を表示します。 values = [1, 2, 3, 4, 5, 6] if (n := len(values)) > 5: print(f’The list is longer …

ウォルラス演算子のユースケース(Walrus Operator:Use cases) Read More »

PyCaret(オープンソースの自動機械学習:AutoML)

目次 1. PyCaretとは 2. 実験: _2.1 環境構築 _2.2 データロード _2.3 モデル比較 _2.4 モデル作成 _2.5 モデルチューニング _2.6 モデル評価 _2.7 モデルのデプロイ _2.8 モデルの保存 _2.9 モデルのロード 1. PyCaretとは PyCaretは、機械学習ワークフローを自動化するPythonのオープンソースのローコード機械学習ライブラリです。 これは、データサイエンスにおいてモデル比較を指数関数的にスピードアップし、生産性を向上させるエンドツーエンドの機械学習およびモデル管理ライブラリーです。 PyCaretのモジュールは下記になります。 – 分類 Classification – 回帰 Regression – クラスタリング Clustering – 異常検出 Anomaly Detection – 自然言語処理(NLP  Natural Language Processing) – アソシエーションルール Association Rules – データセット 今回の実験はバイナリ分類を実験したいと思います。 https://pycaret.readthedocs.io/en/latest/index.html 2. 実験: 環境:Google colab データセット:UCIのmushroomキノコが食べられるか食べられないかのデータです。 e=edible,p=poisonousなどという頭文字だけのcsvデータです。 …

PyCaret(オープンソースの自動機械学習:AutoML) Read More »

レコメンドのランキングの評価指標 (PR曲線とAUC, MRR, MAP, nDCG)

目次 ランキングの評価指標とは PR曲線とAUC(Precision-Recall Curve) MRR(Mean Reciprocal Rank) MAP(Mean Average Precision) nDCG(normalized Discounted Cumulative Gain) 前回の記事は協調フィルタリングのレコメンデーションエンジンについて解説しました。今回はレコメンドの評価について解説していきます。   1. ランキングの評価指標とは ユーザに提示されるのはおすすめ度の高い上位数アイテム(TopN)複数であり、ユーザの嗜好が高いと思われる順にアイテムを正しく並べ変えるタスクと捉えることができます。   2. PR曲線(Precision-Recall Curve) Recallを横軸に、Precisionを縦軸にとり、Top1、Top2,…というように閾値であるTopNの Nを変動させると、RecallとPrecisionが複数点プロットできます。精度が良いほど右上のほうに曲線は膨らんでいきます。さらに曲線と縦軸・横軸で囲まれる部分の面積がPR曲線の AUC(Area Under Curve) です。AUCはArea under the curveの略で、Area under an ROC curve(ROC曲線下の面積)をROC-AUCなどと呼びます。 各クラスのアイテム数がほぼ等しい場合は、ROC曲線を使用します。PR曲線は、不均衡データの評価の時に、よく使われます。 PR曲線のコード サンプル予測結果を作成します。 import numpy as np testy = np.array([1, 1, 0, 0, 1]) yhat = np.array([1, 1, 0, 0, 0]) probs = np.array([0.6, 0.5, 0.1, 0.1, 0.1]) PR曲線とAUCを作成します。 from sklearn.metrics import precision_recall_curve from sklearn.metrics import f1_score from sklearn.metrics import auc from matplotlib import pyplot   # predict class values lr_precision, lr_recall, _ = precision_recall_curve(testy, probs) lr_f1, lr_auc = f1_score(testy, yhat), auc(lr_recall, lr_precision)   # summarize scores print(‘predict: f1=%.3f auc=%.3f’ % (lr_f1, lr_auc)) …

レコメンドのランキングの評価指標 (PR曲線とAUC, MRR, MAP, nDCG) Read More »

協調フィルタリング(Collaborative filtering)レコメンドエンジン

目次 1. 協調フィルタリングの概要 _1.1 協調フィルタリング(Collaborative Filtering)とは _1.2 協調フィルタリングの長所・短所 2. 実験: _2.1 環境設定 _2.2 データロード _2.3 データ確認 _2.4 モデル作成 _2.5 レコメンドエンジンで距離計算 _2.6 入力したデータからレコメンドエンジン利用 1. 協調フィルタリングの概要 前回はTensorFlowでのレコメンダー【tensorflow-recommenders (TFRS)】を話しました。レコメンドエンジンは複数アルゴリズムがあります。今回の記事は協調フィルタリング(Collaborative filtering)を解説したいと思います。例えば、Google Playでのアプリのインストールの40%は、推奨事項によるものです。YouTubeの総再生時間の60%は、おすすめによるものです。レコメンドエンジンは非常に大切なことです。 1.1 協調フィルタリング(Collaborative Filtering)とは 協調フィルタリング(Collaborative Filtering、CF)は、多くのユーザの過去の行動履歴と嗜好情報を蓄積し、あるユーザの行動履歴から嗜好を推論するレコメンドエンジンです。 Items:システムが推奨するエンティティ。 Google Playストアの場合、Itemsはインストールするアプリです。 Query:システムが推奨を行うために使用する情報。 クエリは、次の組み合わせにすることができます。 Embedding:離散セット(この場合は、クエリのセット、または推奨するアイテムのセット)から埋め込みスペースと呼ばれるベクトル空間へのマッピングであり、次元削減した結果です。 通常、埋め込みスペースは低次元です。 Similarity Measures:類似性は、二つのユーザーやアイテムのペアを取得し、それらの類似性を測定する値を返す関数です。 距離と類似度の解説の詳細はこちらです。   1.2 協調フィルタリングの長所・短所 長所 ・ドメイン知識は必要ありません。 ・セレンディピティ:このモデルは、ユーザーが新しい興味を発見するのに役立ちます。 ・優れた出発点:ある程度、システムは行列因数分解モデルをトレーニングするためにフィードバック行列のみを必要とします。 短所 ・新しいアイテムを処理できません(コールドスタートの問題)。WALSおよびHeuristicsの手法が必要です。 ・クエリ/アイテムのサイド機能(クエリまたはアイテムID以外の機能)を含めるのは難しいです。   2. …

協調フィルタリング(Collaborative filtering)レコメンドエンジン Read More »