Dean@Edinburgh

NYとエジンバラの大学で、スパコンや、科学計算ソフト開発を続けて20年以上が経ちました…

Dean@Edinburgh

NYとエジンバラの大学で、スパコンや、科学計算ソフト開発を続けて20年以上が経ちました。 今までとは全く違うことを始めてみたくて、Pythonと機械学習を勉強し始めました。 機械学習/AIが、どこまで行けるのか、楽しみです。

最近の記事

深層学習:多層ニューラルネットワーク バックプロパゲーション

前記事のForward Propagationから得られた結果を元に、ロジスティック関数を作成し、出力から入力側へと誤差を伝播させる。  Forward Propagationから、データ数を$${n}$$、$${d}$$を隠れ層の数とすれば、隠れ層への挿入力は $${{\bf Z^{(h)}}={\bf A}^{(in)}{\bf W}^{h}}$$の$${n\times d }$$行列であり、 隠れ層の活性化関数を経て、 $${{\bf A}^{(h)}=\phi({\b

    • 深層学習:ロジスティック関数の重みの学習

      ロジスティック関数 二値問題や多クラス分類問題の学習アルゴリズムの評価となる、最終出力からのラベリングと正解ラベルの比較に交差エントロピーを使う。  誤差平方和の$${J({\bf w})=\displaystyle{\frac{1}{2}\sum_{i}(a^{(i)}-y^{(i)})^2}}$$は、最小化を目的とするが、逆に最大化したいのが尤度(likelihood)である。  尤度は、入力$${{\bf x}}$$と重み$${{\bf w}}$$が与えられた時の出力

      • 深層学習:多層ニューラルネットワーク Forward Propagation

        入力層、出力層の間に、一つ以上の隠れ層を入れて構成されるニューラルネットワークを、深層ニューラルネットワークと呼ぶ。  隠れ層を増やせば、複雑な多クラス分類問題も学習可能に思えるが、バックプロパゲーションで誤差を伝播させると、隠れ層数が増えるにつれ、誤差が紛れていく勾配消失が起こり、重みの更新に困難が生じる。これに対応したアルゴリズムが深層学習である。  2値分類問題の場合、出力ユニットは$${0\ {\text or}\ 1}$$の一つで良いが、多クラス分類問題の場合は出力

        • 深層学習:ニューラルネットワークにおけるコスト関数最小化法 AdaGrad、RMSProp、ADAM

          Ada Grad Ada Gradは、重みの各成分での勾配の累積平方和から、学習率を各成分の更新頻度を調整する方法である。  よって、前記事の勾配降下法、モーメンタム法とは表記を変えて、各成分毎の偏微分で表し、ベクトルの成分毎の積の演算を$${\odot}$$で表す。 $${{\bm a}\odot{\bm b}=(a_1 \times b_1, \cdots, a_n \times b_n)}$$ これを用いると、$${\bm{w}_t}$$の更新$${\Delta {

        深層学習:多層ニューラルネットワーク バックプロパゲーション

          深層学習:ニューラルネットワークにおけるコスト関数最小化法 Classical Momentum,NAG,Sutskever NAG

          勾配降下法は、コスト関数$${J({\bm w})}$$の勾配にのみ注目しているため、局所的最小値に取り込まれやすい。このため、確率勾配降下法などで、重みを大きく振らしているが、この振動のためにコスト関数の形状によって収束に時間がかかることがある。  これを克服するために、勾配だけでなく、重みの変化割合(速度)に応じた情報も入れて更新するのが、モーメンタム法である。  以下、重みの更新時を$${t}$$とし、$${t}$$から$${t+1}$$での重みの更新を $${{\bm

          深層学習:ニューラルネットワークにおけるコスト関数最小化法 Classical Momentum,NAG,Sutskever NAG

          深層学習:ニューラルネットワークにおけるコスト関数最小化法 勾配降下法、確率勾配降下法、ミニバッチ勾配降下法

           ロジスティック回帰、または多クラス分離に使われる、単層/多層ニュラールネットワークにおいて使用されるコスト関数の最小化方法の代表的なものについて扱う。  入力信号を$${{\bm x}}$$、重みを$${{\bm w}}$$のベクトルとし、活性化関数$${\phi(z)}$$の入力$${z}$$は$${z={\bm w}^T {\bm x}}$$で与えられているとする。  コスト関数$${J}$$は活性化関数の関数として$${J(\phi(z))}$$と与えられ、ニューラル

          深層学習:ニューラルネットワークにおけるコスト関数最小化法 勾配降下法、確率勾配降下法、ミニバッチ勾配降下法

          強化学習:TD学習

          環境モデルがない場合に、エピソード全期間を通じて、状態価値とポリシーを更新していくモンテカルロ法とは違い、エピソードが終わるのを待たずにシミュレートからの経験学習を推定価値の更新に使用するのがTemporal Difference学習法である。  エピソード終了時を$${T}$$と書き、時刻$${t}$$から終了時刻$${T}$$までの利得を$${G_{t:T}}$$と書けば、前記事のFVモンテカルロ法での状態価値の更新は、 $${\nu_{new}(S_t)=\nu(S_t

          強化学習:TD学習

          強化学習:モンテカルロ法

          環境モデル$${Pr(s',r|s,a)}$$が与えられていない場合、エージェントと環境のやり取り(エピソード)をシミュレーションし、そこで観測された状態全ての平均利得を計算する。 First-visit MC エピソードにおいて、状態$${s}$$を最初に観測した時に計算される総利得を用いて価値関数の推定値を更新する。  各エピソードが終了してから、各時刻$${t}$$での利得$${G_t}$$を計算し、これを目的利得として、学習率を$${\alpha}$$を用いて、推

          強化学習:モンテカルロ法

          強化学習 動的計画法

          動的計画法を適用するには、以下の二つの条件が必要である。 環境モデル$${Pr(s',r|s,a)}$$が既知である エージェントはマルコフ性を持つ ポリシーの改善  前記事のベルマン方程式を用いて、任意のポリシー$${\pi}$$に対っする価値関数を計算する。$${\nu^{(0)}(s)=0}$$と初期化し、その後のイテレーション$${i+1}$$において、ベルマン方程式を用いて各状態の価値を更新する。 $${\nu^{(i+1)}(s)=\sum_{a}\pi(

          強化学習 動的計画法

          MDPによる強化学習:ベルマン方程式

          価値関数を再帰的に扱い、ベルマン方程式を導出する。 利息の再帰的式と状態価値関数と行動価値関数の関係から、 $${\nu_{\pi}(s)=\sum_{a\in A} \pi(a|s)q_{\pi}(s,a)=\sum_{a\in A}\pi(a|s)E_{\pi}[r+\gamma G_{t+1}|S_t=s,A_t=a]}$$  期待値は、全ての状態と報酬を足し上げて得られるから、ここに、環境モデルの$${(s,a)}$$を取った結果$${(s',r)}$$となる確率$$

          MDPによる強化学習:ベルマン方程式

          MDPによる強化学習:環境モデル、動的計画法、状態遷移確率、利得、ポリシー、価値関数

           時刻tでの決定がそれ以降の状況に影響を与える意思決定プロセスであるマルコフ決定プロセス(MDP)を基に、強化学習を数式化する。  開始状態を$${S_0}$$とおく。エージェントは、時刻$${t}$$の状態 $${S_t}$$から動作$${A_t}$$を決定し、環境はその動作を受けてエージェントに報酬$${R_{t+1}}$$を返す。これを終了時間$${T}$$まで続け、それを一連のエピソードと呼ぶ。  $${S_t, A_t, R_{t+1}}$$は確率変数で、マルコフ決

          MDPによる強化学習:環境モデル、動的計画法、状態遷移確率、利得、ポリシー、価値関数

          High Performance Python: Numpy and Numba

          Pythonの高速化には、Numpyによるベクトル化と、llvmを使い動的にコンパイルするNumbaの二つがコードを大きく書き換える必要もなく手軽と言える。 素数判定 def isPrime(I): if I % 2 == 0: return False for i in range(3, int(I ** 0.5) + 1, 2): if I % i == 0: return False return True ループ関

          High Performance Python: Numpy and Numba

          ファイナンス機械学習:機械学習を使ったアセットアロケーション 練習問題 固有値行列をスケール変換する

          前問のNアセットのPnL行列の共分散行列をスペクトル分解し、スケール変更によるポートフォリオの重みの変化を比較する。 共分散行列を$${{\bf V}}$$、$${{\bf V}}$$の固有ベクトル行列を$${{\bf W}}$$、固有値を対角に並べたものを$${{\bf Lambda}}$$とすれば、 $${{\bf V W}={\bf W \Lambda}}$$である。 eVal,eVec=np.linalg.eigh(cov)eVal=np.diag(eVal) $

          ファイナンス機械学習:機械学習を使ったアセットアロケーション 練習問題 固有値行列をスケール変換する

          ファイナンス機械学習:機械学習を使った資産アロケーション 練習問題 ストックプライス

          投資戦略のN個の証券の損益(PnL)系列が与えられているとする。 週次の取引とし、週次の観測値に合わせ、リターンの共分散から、階層クラスターを求め、クラスター化された相関係数行列を可視化する。 from datetime import datetimefrom pandas_datareader import data as pdrimport yfinance as yfinyfin.pdr_override()ticker_symbols=['AAPL','ACN','

          ファイナンス機械学習:機械学習を使った資産アロケーション 練習問題 ストックプライス

          ファイナンス機械学習:機械学習によるアセットアロケーション アウトオブサンプルのモンテカルロシミュレーション HRP,IVP,CLA

          インサンプルでパフォーマンスの高いものが、アウトオブサンプルで同じパフォーマンスを示すとは限らない。  モンテカルロ法を使い、CLAの最小分散ポートフォリオ、リスクパリティのIVP、そしてHRPポートフォリオのアウトオブサンプルにおけるパフォーマンスを比較する。  平均ゼロで10%の標準偏差の正規リターンを、$${520 \times 10}$$作成する。520の観測値個数は日次ベースで2年に相当する。  現実の価格はジャンプがあることから、生成データにランダムなショックと相

          ファイナンス機械学習:機械学習によるアセットアロケーション アウトオブサンプルのモンテカルロシミュレーション HRP,IVP,CLA

          ファイナンス機械学習:機械学習によるアロケーション HRP 数値例

          $${10000 \times 10}$$の観測データから、HRPとIVP、CLAを使ってポートフォリオを構築する。 def generateData(nObs, size0, size1, sigma1): #1) generating some uncorrelated data np.random.seed(seed=12345) random.seed(12345) x = np.random.normal(0, 1, size=(nO

          ファイナンス機械学習:機械学習によるアロケーション HRP 数値例