DeepLearningDay4

実施内容と得点表 章タイトル 要点 実装演習 確認テストまたは考察 参考図書など関連記事レポート 強化学習 ◯ ◯ AlphaGo ◯ ◯ 軽量化・高速化技術 ◯ ◯ 応用技術 ◯ ◯ ◯ ResNet ◯ ◯ ◯ EfficientNet ◯ - - ◯ 物体検知と SS 解説 ◯ - - ◯ Mask R-CNN ◯ - - ◯ FCOS ◯ - - ◯ Transformer ◯ - - ◯ BERT ◯ ◯ ◯ ◯ GPT ◯ - - ◯ 音声認識 ◯ - - ◯ CTC ◯ - - DCGAN ◯ - - ◯ Conditinal GAN ◯ - - ◯ Pix2Pix ◯ - - ◯ A3C ◯ - - Metric-Learning ◯ - - MAML ◯ - - GCN ◯ - - ◯ CAM,Grad-CAM,LIME,SHAP ◯ ◯ - Docker ◯ - - 合計:45 基準:36

続きを読む

DeepLearningDay3

再帰型NNの概念 再帰型NN→RNN 時系列データとは 時間的順序を追って一定間隔ごとに観察され、 相互に統計的依存関係が認められるようなデータの系列 時系列データの例 音声データ テキストデータ RNNの全体像 (講義スライドより引用) $u^t = W_{(in)}x^t + W{z^{t-1}} + b$ $z^t = f(W_{(in)}x^t + Wz^{t-1} + b)$ $v^t = W_{(out)} z^t + c$ $y^t = g(W_{(out)} z^t + c)$ $W_{(in)}$:入力層から中間層への重み $W_{(out)}$:中間層から出力層への重み u[:,t+1] = np.dot(X,W_in) + np.dot(z[:,t].reshape(1,-1),W) + b z[:,t+1] = functions.sigmoid(u[:,t+1]) v = np.dot(z[:,t+1].reshape(1,-1),W_out) y[:,t] = functions.sigmoid(v + c) ※実装上は1次元目がデータ列になるため、重みに対して左から入力を掛ける形になる。 RNNの特徴 初期の状態と過去の時間t-1の状態を保持し、そこから次の時間でのtを再帰的に求める再帰構造をもつ BPTT (Back Propagation Through Time) BPの復習 誤差を微分のチェインルールに従って、誤差から逆算していくことで不要な再起的計算を避けて微分を算出できる。 BPTTの数学的記述 ※(パラメータ更新と合わせて、実装例と一致するように、数式展開で確認しながら表現変えてます) 誤差関数を3つの重みと2つのバイアスでそれぞれ微分する。

続きを読む

DeepLearningDay2

要点(最低100字) 勾配消失問題 誤差逆伝播の復習 誤差から微分を逆算していくことで不要な再帰的計算を避けて微分を算出できる 確認問題1 勾配消失問題の復習 誤差逆伝播が入力層に進んでいくに連れて勾配がどんどん減衰していくために パラメータ更新が入力層に近い側で進まなくなり、最適値に収束しなくなる現象 微分値の絶対値が1未満になると減衰していくことになる。 活性化関数の微分 $(1-sigmoid(x))\cdot sigmoid(x)$ シグモイド関数の微分は最大値が0.25であり、多層になると減衰が進んでいく。 (実装ノートより引用) 確認問題2 (2) 活性化関数による勾配消失対策 ReLU関数:勾配消失問題への対応とスパース化で貢献 (講義スライドより引用) 微分値は正の範囲で1,負の範囲で0 重みの初期化 Xavierの初期化 手法 正規分布での初期化値を一つ前の層のノード数で割る。(初期の方法でLeCunが提案したもの。) →各レイヤの出力の分散は「$n_{in} \times var_{in} \times var_{out}$」となるので、出力の分散を入力ノード数で割ることで分散を一定にできる。 逆伝播の方向も考慮した、入出力の平均値で割ってスケーリングするのが現在の方法 network['W1'] = np.random.randn(input_layer_size, hidden_layer_size) / np.sqrt((input_layer_size+hidden_layer_size)/2) network['W2'] = np.random.randn(hidden_layer_size, output_layer_size) / np.sqrt((hidden_layer_size+output_layer_size)/2) 対象の活性化関数 sigmoid 双曲線関数 ※Xavierの初期化は0近辺で線形近似できる前提をおいているので、ReLUには使えない。 効果 もともとSigmoidに対して、正規分布で初期化した際は活性化関数への入力が0から外れすぎることで出力が0か1に偏っていたのが、 分散を抑制することで0~1にうまくバラける様になった。 またネットワーク全体で見たときに各層の分散が一定に保たれる。 Heの初期化 手法 あるレイヤーを経た後の出力の分散は、ReLU を考慮すると、「1/2 × $n_{in}$ × 入力の分散 × 重みの分散」となります。そこで、Kaiming (He) 初期化では、重みを として、標準偏差が $\sqrt{2/n_{in}}$ の正規分布によって初期化 network['W1'] = np.random.randn(input_layer_size, hidden_layer_size) / np.

続きを読む

OverViews Overviews Methods Knowledge Factor Covariance Matrix $$F = \frac{1}{N-1} f \cdot f^T \times annualization_factor$$ N:要素数 f:ファクターリターン annualization_factor: 252/days_passed Actual Retrurn $$r_p = \sum_i^N \beta_i\times f_i + s_p$$ common return ファクターリターンとファクターエクスポージャの内積 ファクターリターンの計算 日付をインデックスとして、ティッカーをカラムとするreturnsがあるとき from sklearn.decomposition import PCA model = PCA(n_components=num_factor) pca.fit(returns) factor_returns = pca.transform(returns) ファクターエクスポージャーの計算 from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(factor_returns,portfolio_actual_return) exposure = model.coef_ specific return 実際のリターンからコモンリターンを引いたあたいで、ファクターで説明されない部分のリターンを示す。 この値は小さくしたい

続きを読む

DeepLearningDay1

要点(最低100字) 識別と生成 識別:データを目的別クラスに分類する $P(C_k|x)$:条件Xが与えられた条件の元でのクラスkの確率 高次元から低次元へ 必要な学習データは比較的少ない 応用例 画像認識 生成:特定クラスのデータを生成する $P(x|C_k)$:クラスkという条件のものとでのデータCkの分布 低次元から高次元へ 必要な学習データが多い 応用例 画像の超解像 テキスト生成 主要なモデル 識別モデル 決定木 ロジスティック回帰 SVM ニューラルネットワーク 生成モデル 隠れマルコフモデル ベイジアンネットワーク VAE GAN DRAW 識別器の開発アプローチ 上から順に学習コストが大→小 生成モデル的アプローチ ベイズの定理を活用 モデル化の対象 各クラスの生起確率 データのクラス条件付き密度 データを人工的に生成できる 確率的な識別 識別モデル 決定理論に基づき識別結果を得る データがクラスに属する確率をモデル化 確率的な識別 識別関数 入力値xを直接クラスに写像(変換)する関数f(x)を推定 データの属するクラス情報のみ(確率は計算されない) 決定的な識別 生成モデルと識別モデルの比較 生成モデルのアプローチではより複雑なデータ分布を学習しようとするので、計算量が多い。 (講義ビデオより引用) 識別モデルと識別関数 モデルは推論結果の取り扱いを変更でき、間違いの程度も評価できるが 識別関数ではそれらが出来ない。結果を一足飛びに得る。 (講義ビデオより引用) 深層学習の強み:万能近似定理 万能近似定理:活性化関数をもつネットワークを使うことで、どんな関数でも近似できるという定理 これまでの機械学習では人間が関数を設計していた ノーフリーランチの定理 ニューラルネットの数学的表現 (ラビットチャレンジの深層学習day1講義資料より引用) 回帰と分類の違い 回帰:連続する実数値を取る関数の近似 分類:離散的な結果を予想するための分析 線形と非線形の違い 線形な関数は以下の性質を持つが、非線形関数は持たない。 加法性:$f(a+b) = f(a) + f(b)$ 斉次性$f(ka) = k\times f(a)$ 活性化関数 ステップ関数 def step_func(x): if x > 0: return 1 else: return 0 問題点:線形分離可能なものしか学習出来なかった

続きを読む

MachineLearning

要点(最低100字) 機械学習モデリングプロセス 問題設定 データ選定 前処理 機械学習モデル剪定 モデルの学習 モデルの評価 ルールベースと機械学習の比較 タスクTと性能指標Pがあるときに、性能が経験Eによって改善されるとき、 タスクTおよび性能指標Pに関して経験E から学習すると言われる 人がプログラムするのは学習の仕方 (認識の仕方では無い) ルールベースは認識の仕方自体をプログラムする。 主なモデル 教師あり学習 回帰 線形回帰・非線形回帰:最小二乗法、尤度最適化 分類 ロジスティック回帰;尤度最大化 最近傍・K-近傍アルゴリズム SVM:マージン最大化 教師なし学習 クラスタリング K-Means 次元削減 主成分分析:分散最大化 回帰問題 入力(説明変数、特徴量)から出力(目的変数)を予測する問題 一般的に、外挿問題(学習データに含まれない範囲の値域)での予測の精度が下がる。 どの学習方法でも共通。 線形回帰 線形とは→ざっくりというと比例。 n次元の超平面の方程式 直線、平面→線形回帰 曲線、局面→非線形 線形回帰に関連する値 教師データに含まれるもの 入力$\vec{x} = (x_1,x_2,\dots,x_m)^\top \in R^m$ 出力$y\in R$ 学習によって最適化していくもの パラメータ$\vec{w} = (w_1,w_2,\dots,w_m)^\top \in R^m$$ 切片$w_0$ 学習の際に使う値 予測値$\hat{y} = w_0 + \sum_{i=1}^n \vec{w}^\top \vec{x}$ (※データセットで考えるときは$\vec{\hat{y}} = X・\vec{w}$) 誤差$\epsilon = y - \hat{y}$ 線形回帰の最適化手法(最尤法) 最小2乗誤差 $MSE = \frac{1}{n_{train}}\sum(y-\hat{y})^2$ を用いて最適化する。 $\hat{\vec{w}} = arg \min_{w \in R^m} MSE$ MSEが最小値を取るとき

続きを読む

AppliedMathematics

要点(最低100字) 目次 線形代数 確率・統計 情報理論 線形代数 固有値・固有ベクトルの求め方 固有値分解とは 特異値・特位置ベクトルの概要 特異値分解について 固有値・固有ベクトル 固有ベクトルは対応する行列をかけた際に、ベクトルの方向が変わらないベクトル。 固有値は固有ベクトルに行列をかけたときに何倍になるかを示す。 $$A\vec{a}=\lambda\vec{a} \tag{1}$$ のとき、$\vec{a}$が固有ベクトル、λが固有値 求め方は固有方程式で固有値を求めたあと、固有値を(1)式に代入して連立方程式を解く。 固有ベクトルの大きさについては1にしておくのが一般的。(※後の特異値を求めるときにそちらのほうが都合が良い) 固有値分解 固有値ベクトルを列ベクトルに持つ行列Vと、対応する固有値を対角成分に持つ対角行列Λを用いて行列Aは以下の式に分解できる。 $$ A = V\Lambda V^{-1} \tag{2}$$ プログラミング的には、対角行列の演算負荷が低いことから、計算速度向上、リソース節約につながる。 import numpy as np values,vectors = np.linalg.eig(matrix) 特異値・特異ベクトル 固有値については正方行列のみしか扱えなかったが、これをm×nの行列に拡張したもの。 Uの列ベクトルを左特異ベクトル、、Vの列ベクトルを右特異ベクトルという。 Σの対角成分は特異値という。 ※このとき、ベクトルのノルムは1、σ>0,特異値の数はmin(m,n)となる。今回はm<nとした。 $$ A = U\Sigma V^{\top} \tag{3}$$ $$A\vec{v}=\sigma\vec{u} \tag{4}$$ $$A^\top\vec{u}=\sigma\vec{v} \tag{5}$$ $\sum =$ $$ \begin{pmatrix} \sigma_{1} & 0 & \dots & & &0 \ 0&\sigma_{2}& 0 & \dots & &0\ 0 & 0 &\ddots&0 &\dots&\vdots\ \vdots&\dots&0&\sigma_m&0&\dots \end{pmatrix} $$

続きを読む

プロフィール画像

Half-Broken Engineer

🤖    壊れかけのエンジニア    💻不安を解消したいから💰のお勉強もする

Engineer

Japan