pyMC API ベイズ・確率プログラミング

pyMC API 推定

推定

推定
pymc.ADVI
pymc.ASVGD
pymc.SVGD
pymc.FullRankADVI
pymc.ImplicitGradient
pymc.Inference
pymc.KLqp
pymc.fit
pymc.Empirical
pymc.FullRank
pymc.MeanField
pymc.sample_approx
pymc.Approcimation
pymc.Group
pymc.variational.operators.KL
pymc.variational.operators.KSD
pymc.Stein
pymc.adadelta
pymc.adagrad
pymc.adagard_window
pymc.adam
pymc.apply_momentum
pymc.apply_netserv_momentum
pymc.momentum
pymc.netserv_momentum
pymc.norm_momentum
pymc.rmsprop
pymc.sgd
pymc.total_norm_constraint

pymc.ADVI

自動微分変分推論(ADVI - Automatic Difference Variational Inference)

class pymc.ADVI(*args, **kwargs)

変数
model推論のためのpymcモデル
random_seedint
startdict[str,np.ndarray]推論のための開始点
start_sigmadict[str,np.ndarray]推論のための開始標準偏差

アルゴリズムのより詳しい情報については以下を参照.

  • Kucukelbir, A., Tran, D., Ranganath, R., Gelman, A., and Blei, D. M. (2016). Automatic Differentiation Variational Inference. 
  • Geoffrey Roeder, Yuhuai Wu, David Duvenaud, 2016 Sticking the Landing: A Simple Reduced-Variance Gradient for ADVI 
  • Kingma, D. P., & Welling, M. (2014). Auto-Encoding Variational Bayes. 

メソッド
ADVI.__init__(*args,**kwargs)
ADVI.fit([n,score,callbacks,progressbar])変分推論の演算を実行する
ADVI.refine(n[,progressbar])最後にコンパイルしたステップ関数を使ってソリューションを向上させる
ADVI.run_profiling(n,score])

pymc.ASVGD

Amortizedスタイン変分勾配下降(ASVGD - Amortized Stein Variational Gradient Descent)

class pymc.ASVGD(approx=None, estimator=<class 'pymc.variational.operators.KSD'>, kernel=<pymc.variational.test_functions.RBF object>, **kwargs)
変数
approxclass Approximationデフォルト値はFullRank
kernelintKSDのためのカーネル関数
modelclass Model
kwargs勾配見積もりのためのパラメータ

アルゴリズムのより詳しい情報については以下の文献を参照してください。

  • Dilin Wang, Yihao Feng, Qiang Liu (2016) Learning to Sample Using Stein Discrepancy
  • Dilin Wang, Qiang Liu (2016) Learning to Draw Samples: With Application to Amortized MLE for Generative Adversarial Learning
  • Yang Liu, Prajit Ramachandran, Qiang Liu, Jian Peng (2017) Stein Variational Policy Gradient
メソッド
ASVGD.__init__(*args,**kwargs)
ASVGD.fit([n,score,callbacks,progressbar])変分推論の演算を実行する
ASVGD.refine(n[,progressbar])最後にコンパイルしたステップ関数を使ってソリューションを向上させる
ASVGD.run_profiling(n,score])

pymc.SVGD

スタイン変分勾配下降

class pymc.SVGD(n_particles=100, jitter=1, model=None, start=None, random_seed=None, estimator=<class 'pymc.variational.operators.KSD'>, kernel=<pymc.variational.test_functions.RBF object>, **kwargs)
変数
n_particlesint近似に使う小片(粒子)の数
jitterfloat初期値のためのノイズ標準偏差
modelclass Model推論のためのpyMCモデル
kernelintKSDのためのカーネル関数
startdict[str,np.ndarray]推論のための初期値
randim_seedNoneまたは int
kwargs勾配見積もりのためのパラメータ

アルゴリズムのより詳しい情報については以下の文献を参照してください。

  • Qiang Liu, Dilin Wang (2016) Stein Variational Gradient Descent: A General Purpose Bayesian Inference Algorithm
  • Yang Liu, Prajit Ramachandran, Qiang Liu, Jian Peng (2017) Stein Variational Policy Gradient
メソッドKingma, D. P., & Welling, M. (2014). Auto-Encoding Variational Bayes.
SVGD.__init__(*args,**kwargs)
SVGD.fit([n,score,callbacks,progressbar])変分推論の演算を実行する
SVGD.refine(n[,progressbar])最後にコンパイルしたステップ関数を使ってソリューションを向上させる
SVGD.run_profiling(n,score])

pymc.FullRankADVI

フルランク自動微分変分推論

class pymc.FullRankADVI(*args, **kwargs)
変数
modelclass Model推論のためのpyMCモデル
randim_seedNoneまたは int
startdict[str,np.ndarray]推論のための初期値

アルゴリズムのより詳しい情報については以下の文献を参照してください。

  • Kucukelbir, A., Tran, D., Ranganath, R., Gelman, A., and Blei, D. M. (2016). Automatic Differentiation Variational Inference.
  • Geoffrey Roeder, Yuhuai Wu, David Duvenaud, 2016 Sticking the Landing: A Simple Reduced-Variance Gradient for ADVI 
  • Kingma, D. P., & Welling, M. (2014). Auto-Encoding Variational Bayes.
メソッド
FullRankADVI.__init__(*args,**kwargs)
FullRankADVI.fit([n,score,callbacks,progressbar])変分推論の演算を実行する
FullRankADVI.refine(n[,progressbar])最後にコンパイルしたステップ関数を使ってソリューションを向上させる
FullRankADVI.run_profiling(n,score])

pymc.ImplicitGradient

暗黙の勾配(ImplicitGradient)

class pymc.ImplicitGradient(approx, estimator=<class 'pymc.variational.operators.KSD'>, kernel=<pymc.variational.test_functions.RBF object>, **kwargs)
メソッド
ImplicitGradient.__init__(*args,**kwargs)
ImplicitGradient.fit([n,score,callbacks,progressbar])変分推論の演算を実行する
ImplicitGradient.refine(n[,progressbar])最後にコンパイルしたステップ関数を使ってソリューションを向上させる
ImplicitGradient.run_profiling(n,score])

pymc.Inference

変分推論の基底クラス

class pymc.Inference(op, approx, tf, **kwargs)
変数
opClass Operator
approxClass Approximation
tfTestFunction
modelclass Model推論のためのpyMCモデル
kwargsNoneまたは int
メソッド
Inference.__init__(*args,**kwargs)
Inference.fit([n,score,callbacks,progressbar])変分推論の演算を実行する
Inference.refine(n[,progressbar])最後にコンパイルしたステップ関数を使ってソリューションを向上させる
Inference.run_profiling(n,score])

pymc.KLqp

カルバック・ライブラー・ダイバージェンス(KL情報量)推論

class pymc.KLqp(approx, beta=1.0)
変数
approxClass Approximationfitのための近似
betafloatELBOの正則化スケール

アルゴリズムのより詳しい情報は以下の文献を参照してください。

Christopher P. Burgess et al. (NIPS, 2017) Understanding disentangling in -VAE 

メソッド
KLqp.__init__(approx[,beta])
KLqp.fit([n,score,callbacks,progressbar])変分推論の演算を実行する
KLqp.refine(n[,progressbar])最後にコンパイルしたステップ関数を使ってソリューションを向上させる
KLqp.run_profiling(n,score])

pymc.fit

pymc.fit(n=10000, method='advi', model=None, random_seed=None, start=None, start_sigma=None, inf_kwargs=None, **kwargs)
変数
nint繰り返し数
methodstr推論クラス名
'advi'
'fullrank_advi'
'svgd'
'asvgd'
modelclass Model推論のためのpyMCモデル
randim_seedNone または int
int_kwargsdict推論に渡される追加引数
startdict[str,np.ndarray]推論のための初期値
start_sigmaNoneまたは int推論のための開始標準偏差

pymc.Empirical

class pymc.Empirical(trace=None, size=None, **kwargs)
メソッド
Empirical.__init__(approx[trace,size])
Empirical.collect(item)
Empirical.evaluate_over_trace(node)トレース城の任意のシンボリック命令を統計的に評価する
Empirical.get_optimization_replacements(s,d)kogPへの最適化
Empirical.make_size_and_deterministic_replacements()決定フラグとサンプルサイズに依存した初期値に正しい交換値を作る。
Empirical.rslice(name)pytensor.scanを呼ばずに名付けランダム変数に対するベクター化サンプリング
Empirical.sample([draws,random_seed,...])事後分布の変数からサンプルを出力する
Empirical.sample_node(node[,size,...]])与え非れたノードのサンプル
Empirical.set_size_and_deterministic(node,s,d)symbolic_sample_over_posterior()またはsymbolic_single_sample()でノードがサンプルされた後、新しい乱数生成器が割り当てれてノードに適用される。
Empirical.simbolic_sample_over_posterior(node)各時間の事後から独立したサンプルを適用してノードのサンプルを実行する
Empirical.symbolic_single_sample(node[,...])事後から単一サンプルを適用してノードのサンプルを実行する
Empirical.to_flat_input(node[,...])変数を平坦なビューに取り替えてself.inputに保存する。
属性
all_histograms
any_histograms
datalogp後で最適化されるpytensor.scan経由でモデルからEqを計算する。
datalogp_norm正規化Eq
ddim
has_logq
inputs
joint_histogram
logq後で最適化されるpytensor.scan経由でモデルからEqを計算する。
logq_norm正規化Eq (logP)
logq全てのグループのlogQを収集する
logq_norm全てのグループのlogQを収集して正規化する
ndim
params
replacementspyMCのランダム変数を近似で置き換えるためにグループから全てを交換
sample_dict_fn
scale_cost_to_minibatchスケーリングコストを操作するプロパティ
single_symbolic_datalogpシングルMCサンプルでEq(dataterm)を見積もるのにpytensor.scanは必要とされず、コードは最適化される
single_symbolic_logpシングルMCサンプルのEq(logP)見積りにpytensor.scanは必要とされず、コードは最適化される
single_symbolic_varlogpシングルMCサンプルのEq(priorterm)見積りにpytensor.scanは必要とされず、コードは最適化される
sized_symbolic_datalogppytensor.scanを使いモデルからサンプルしたデータ termを計算する
sized_symbolic_logppytensor.scanを使いモデルからサンプルしたlogPを計算する
sized_symbolic_varlogppytensor.scanを使いモデルからサンプルした事前期間を計算する
symbolic_logq全てのグループのsymbolic_logqを収集する
symbolic_normalizing_constantself.logqの正規化定数、total_sizeの代わりにminibatch_sizeにサイズ変更する
symbolic_random
symbolic_randoms
varlogp後で最適化するpytensor.scanを使ってモデルからEq(priorterm)を計算する
varlogp_norm

pymc.FullRank

シングルグループフルランク近似

class pymc.FullRank(*args, **kwargs)

メソッド
FullRank.__init__(*args,**kwargs)
FullRank.collect(item)
FullRank.get_optimization_replacements(s,d)logPの最適化
FullRank.make_size_and_deterministic_replacements()決定フラグとサンプルサイズに依存した初期値に正しい交換値を作る。
FullRank.rslice(name)pytensor.scanを呼ばずに名付けランダム変数に対するベクター化サンプリング
FullRank.sample([draws,random_seed,...])事後分布の変数からサンプルを出力する
FullRank.sample_node(node[,size,...]])与え非れたノードのサンプル
FullRank.set_size_and_deterministic(node,s,d)symbolic_sample_over_posterior()またはsymbolic_single_sample()でノードがサンプルされた後、新しい乱数生成器が割り当てれてノードに適用される。
FullRank.simbolic_sample_over_posterior(node)各時間の事後から独立したサンプルを適用してノードのサンプルを実行する
FullRank.symbolic_single_sample(node[,...])事後から単一サンプルを適用してノードのサンプルを実行する
FullRank.to_flat_input(node[,...])変数を平坦なビューに取り替えてself.inputに保存する。
属性
all_histograms
any_histograms
datalogp後で最適化されるpytensor.scan経由でモデルからEqを計算する。
datalogp_norm正規化Eq
ddim
has_logq
inputs
joint_histogram
logq後で最適化されるpytensor.scan経由でモデルからEqを計算する。
logq_norm正規化Eq (logP)
logq全てのグループのlogQを収集する
logq_norm全てのグループのlogQを収集して正規化する
ndim
params
replacementspyMCのランダム変数を近似で置き換えるためにグループから全てを交換
sample_dict_fn
scale_cost_to_minibatchスケーリングコストを操作するプロパティ
single_symbolic_datalogpシングルMCサンプルでEq(dataterm)を見積もるのにpytensor.scanは必要とされず、コードは最適化される
single_symbolic_logpシングルMCサンプルのEq(logP)見積りにpytensor.scanは必要とされず、コードは最適化される
single_symbolic_varlogpシングルMCサンプルのEq(priorterm)見積りにpytensor.scanは必要とされず、コードは最適化される
sized_symbolic_datalogppytensor.scanを使いモデルからサンプルしたデータ termを計算する
sized_symbolic_logppytensor.scanを使いモデルからサンプルしたlogPを計算する
sized_symbolic_varlogppytensor.scanを使いモデルからサンプルした事前期間を計算する
symbolic_logq全てのグループのsymbolic_logqを収集する
symbolic_normalizing_constantself.logqの正規化定数、total_sizeの代わりにminibatch_sizeにサイズ変更する
symbolic_random
symbolic_randoms
varlogp後で最適化するpytensor.scanを使ってモデルからEq(priorterm)を計算する
varlogp_norm

pymc.MeanField

class pymc.MeanField(*args, **kwargs)
メソッド
MeanField.__init__(*args,**kwargs)
MeanField.collect(item)
MeanField.get_optimization_replacements(s,d)logPの最適化
MeanField.make_size_and_deterministic_replacements()決定フラグとサンプルサイズに依存した初期値に正しい交換値を作る。
MeanField.rslice(name)pytensor.scanを呼ばずに名付けランダム変数に対するベクター化サンプリング
MeanField.sample([draws,random_seed,...])事後分布の変数からサンプルを出力する
MeanField.sample_node(node[,size,...]])与え非れたノードのサンプル
MeanField.set_size_and_deterministic(node,s,d)symbolic_sample_over_posterior()またはsymbolic_single_sample()でノードがサンプルされた後、新しい乱数生成器が割り当てれてノードに適用される。
MeanField.simbolic_sample_over_posterior(node)各時間の事後から独立したサンプルを適用してノードのサンプルを実行する
MeanField.symbolic_single_sample(node[,...])事後から単一サンプルを適用してノードのサンプルを実行する
MeanField.to_flat_input(node[,...])変数を平坦なビューに取り替えてself.inputに保存する。
属性
all_histograms
any_histograms
datalogp後で最適化されるpytensor.scan経由でモデルからEqを計算する。
datalogp_norm正規化Eq
ddim
has_logq
inputs
joint_histogram
logq後で最適化されるpytensor.scan経由でモデルからEqを計算する。
logq_norm正規化Eq (logP)
logq全てのグループのlogQを収集する
logq_norm全てのグループのlogQを収集して正規化する
ndim
params
replacementspyMCのランダム変数を近似で置き換えるためにグループから全てを交換
sample_dict_fn
scale_cost_to_minibatchスケーリングコストを操作するプロパティ
single_symbolic_datalogpシングルMCサンプルでEq(dataterm)を見積もるのにpytensor.scanは必要とされず、コードは最適化される
single_symbolic_logpシングルMCサンプルのEq(logP)見積りにpytensor.scanは必要とされず、コードは最適化される
single_symbolic_varlogpシングルMCサンプルのEq(priorterm)見積りにpytensor.scanは必要とされず、コードは最適化される
sized_symbolic_datalogppytensor.scanを使いモデルからサンプルしたデータ termを計算する
sized_symbolic_logppytensor.scanを使いモデルからサンプルしたlogPを計算する
sized_symbolic_varlogppytensor.scanを使いモデルからサンプルした事前期間を計算する
symbolic_logq全てのグループのsymbolic_logqを収集する
symbolic_normalizing_constantself.logqの正規化定数、total_sizeの代わりにminibatch_sizeにサイズ変更する
symbolic_random
symbolic_randoms
varlogp後で最適化するpytensor.scanを使ってモデルからEq(priorterm)を計算する
varlogp_norm

pymc.sample_approx

pymc.sample_approx(approx, draws=100, include_transformed=True)
変数
approxClass Approximationサンプルの近似
drawsintランダムサンプル数
include_transformedboolTrueならば変換変数はサンプルされる

pymc.Approximation

グループ近似のラッパー

class pymc.Approximation(groups, model=None)

変数
groupsClass Approximationグループインスタンスのリスト
modelModel
メソッド
MeanField.__init__(*args,**kwargs)
MeanField.collect(item)
MeanField.get_optimization_replacements(s,d)logPの最適化
MeanField.make_size_and_deterministic_replacements()決定フラグとサンプルサイズに依存した初期値に正しい交換値を作る。
MeanField.rslice(name)pytensor.scanを呼ばずに名付けランダム変数に対するベクター化サンプリング
MeanField.sample([draws,random_seed,...])事後分布の変数からサンプルを出力する
MeanField.sample_node(node[,size,...]])与え非れたノードのサンプル
MeanField.set_size_and_deterministic(node,s,d)symbolic_sample_over_posterior()またはsymbolic_single_sample()でノードがサンプルされた後、新しい乱数生成器が割り当てれてノードに適用される。
MeanField.simbolic_sample_over_posterior(node)各時間の事後から独立したサンプルを適用してノードのサンプルを実行する
MeanField.symbolic_single_sample(node[,...])事後から単一サンプルを適用してノードのサンプルを実行する
MeanField.to_flat_input(node[,...])変数を平坦なビューに取り替えてself.inputに保存する。
属性
all_histograms
any_histograms
datalogp後で最適化されるpytensor.scan経由でモデルからEqを計算する。
datalogp_norm正規化Eq
ddim
has_logq
inputs
joint_histogram
logp後で最適化されるpytensor.scan経由でモデルからEqを計算する。
logp_norm正規化Eq (logP)
logq全てのグループのlogQを収集する
logq_norm全てのグループのlogQを収集して正規化する
ndim
params
replacementspyMCのランダム変数を近似で置き換えるためにグループから全てを交換
sample_dict_fn
scale_cost_to_minibatchスケーリングコストを操作するプロパティ
single_symbolic_datalogpシングルMCサンプルでEq(dataterm)を見積もるのにpytensor.scanは必要とされず、コードは最適化される
single_symbolic_logpシングルMCサンプルのEq(logP)見積りにpytensor.scanは必要とされず、コードは最適化される
single_symbolic_varlogpシングルMCサンプルのEq(priorterm)見積りにpytensor.scanは必要とされず、コードは最適化される
sized_symbolic_datalogppytensor.scanを使いモデルからサンプルしたデータ termを計算する
sized_symbolic_logppytensor.scanを使いモデルからサンプルしたlogPを計算する
sized_symbolic_varlogppytensor.scanを使いモデルからサンプルした事前期間を計算する
symbolic_logq全てのグループのsymbolic_logqを収集する
symbolic_normalizing_constantself.logqの正規化定数、total_sizeの代わりにminibatch_sizeにサイズ変更する
symbolic_random
symbolic_randoms
varlogp後で最適化するpytensor.scanを使ってモデルからEq(priorterm)を計算する
varlogp_norm

pymc.Group

class pymc.Group(group=None, vfam=None, params=None, *args, **kwargs)
変数
grouppyMC変数のリスト
vfamstr一致するグループの変分ファミリーを示す文字列
paramdict変分ファミリー変数のdict
randim_seedNone または int乱数生成器のためのランダムシード
modelPyMC Model
optionsdictグループのための特別なオプション
kwargsNoneまたは intその他引数
メソッド
Group.__init__(*args,**kwargs)
Group.get_param_spec_for(**kwargs)
Group.group_for_params(params)
Group.group_for_short_name(name)
Group.make_size_and_deterministic_replacements()決定フラグとサンプルサイズに依存した初期値に正しい交換値を作る。
Group.register(sbcls)
Group.set_size_and_deterministic(node,s,d)symbolic_sample_over_posterior()またはsymbolic_single_sample()でノードがサンプルされた後、新しい乱数生成器が割り当てれてノードに適用される。
Group.simbolic_sample_over_posterior(node)各時間の事後から独立したサンプルを適用してノードのサンプルを実行する
Group.symbolic_single_sample(node[,...])事後から単一サンプルを適用してノードのサンプルを実行する
Group.to_flat_input(node[,...])変数を平坦なビューに取り替えてself.inputに保存する。
Group.var_to_data(shared)平坦な一次元テンソル変数をself.ordering 情報を元にしたxarrayデータセットにマップする
属性
alias_names
cov構造化されていない2次元テンソル変数として潜在変数間の共分散
ddim
has_logq
initial_dist_map
initial_dist_name
inputs
logq後で最適化されるpytensor.scan経由でモデルからEqを計算する。
logq_norm正規化Eq (logP)
mean構造化されていない1次元テンソル変数としての潜在変数の平均
mean_dataxarrayデータセットとしての潜在変数の平均
ndim
params
params_dict
replacementspyMCのランダム変数を近似で置き換えるためにグループから全てを交換
shared_params
short_name
std構造化されていない1次元テンソル変数としての潜在変数の標準偏差
std_dataxarrayデータセットとしての潜在変数の標準偏差
symbolic_initial
symbolic_logq正しいスケール
symbolic_logq_not_scaledself.symbolic_randomのためにlogqの計算
symbolic_normalizing_constantself.logqの正規化定数、total_sizeの代わりにminibatch_sizeにサイズ変更する
symbolic_random抽象ノード self.params_dictで変数化される事後近似を作る

pymc.variational.operators.KL

class pymc.variational.operators.KL(approx, beta=1.0)
変数
approxClass Approximation推論の近似
betafloatKL情報(クルバック・ライブラー)のためのベータ変数
メソッド
KL.__init__(approx[,beta])
KL.apply(f)それ自身のオペレータ
属性
T
datalogp
datalogp_norm
has_test_function
inputs
logp
logp_norm
logq
logq_norm
model
require_logq
returns_loss
supports_aevb
varlogp
varlogp_norm

pymc.variational.operators.KSD

カーネル化スタイン下降を元にした演算

class pymc.variational.operators.KSD(approx, temperature=1)
変数
approxClass Approximation推論の近似
temperaturefloatスタイン勾配の温度

アルゴリズムのより詳しい情報については以下の文献を参照してください。

Qiang Liu, Dilin Wang (2016) Stein Variational Gradient Descent: A General Purpose Bayesian Inference Algorithm

メソッド
KL.__init__(approx[,beta])
KL.apply(f)それ自身のオペレータ
属性
T
datalogp
datalogp_norm
has_test_function
inputs
logp
logp_norm
logq
logq_norm
model
require_logq
returns_loss
supports_aevb
varlogp
varlogp_norm

pymc.Stein

class pymc.Stein(approx, kernel=<pymc.variational.test_functions.RBF object>, use_histogram=True, temperature=1)
メソッド
Stein.__init__(approx[,beta])
属性
Kxy
approx_symbolic_matrices
density_part_grad
dlogp
dxkxy
grad
input_joint_matrix
logp_norm
repulsive_part_grad

pymc.adadelta

Adaデルタ 更新

pymc.adadelta(loss_or_grads=None, params=None, learning_rate=1.0, rho=0.95, epsilon=1e-06)
変数
loss_or_gradsスカラー損失命令
paramslist更新命令を生成する変数
learning_ratefloat更新ステップのサイズを操作する学習率
rhofloatスクエア勾配移動平均因子
epsilonfloat数値の安定性に付加する微小値

アルゴリズムの詳細は以下の文献を参照してください。

Zeiler, M. D. (2012): ADADELTA: An Adaptive Learning Rate Method. 

(使用例)

>>> a = pytensor.shared(1.)
>>> b = a*2
>>> updates = adadelta(b, [a], learning_rate=.01)
>>> isinstance(updates, dict)
True
>>> optimizer = adadelta(learning_rate=.01)
>>> callable(optimizer)
True
>>> updates = optimizer(b, [a])
>>> isinstance(updates, dict)
True

pymc.adagrad

Adagrad 更新

pymc.adagrad(loss_or_grads=None, params=None, learning_rate=1.0, epsilon=1e-06)
変数
loss_or_gradsスカラー損失命令
paramslist更新命令を生成する変数
learning_ratefloat更新ステップのサイズを操作する学習率
epsilonfloat数値の安定性に付加する微小値

アルゴリズムのより詳しい情報は以下の文献を参照してください。

  • Duchi, J., Hazan, E., & Singer, Y. (2011): Adaptive subgradient methods for online learning and stochastic optimization. 
  • Chris Dyer: Notes on AdaGrad.

(使用例)

>>> a = pytensor.shared(1.)
>>> b = a*2
>>> updates = adagrad(b, [a], learning_rate=.01)
>>> isinstance(updates, dict)
True
>>> optimizer = adagrad(learning_rate=.01)
>>> callable(optimizer)
True
>>> updates = optimizer(b, [a])
>>> isinstance(updates, dict)
True

pymc.adagrad_window

pymc.adagrad_window(loss_or_grads=None, params=None, learning_rate=0.001, epsilon=0.1, n_win=10)
変数
loss_or_gradsスカラー損失命令
paramslist更新命令を生成する変数
learning_ratefloat更新ステップのサイズを操作する学習率
epsilonfloatadagradの正規化で0除算を避けるためのオフセット
n_winint勾配パラメータのスケールを計算するための過去のステップ数
戻り値
OrderedDict各パラメータのdictionaryマッピング

pymc.adam

Adam更新

pymc.adam(loss_or_grads=None, params=None, learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08)
変数
loss_or_gradsスカラー損失命令
paramslist更新命令を生成する変数
learning_ratefloat更新ステップのサイズを操作する学習率
beta1float最初のモーメントの指数減衰率
beta2float2番目のモーメントの指数減衰率
epsilonfloat数値安定のための一定値
戻り値
OrderedDict各パラメータのdictionaryマッピング

アルゴリズムのより詳細な情報は以下の文献を参照してください。

Kingma, Diederik, and Jimmy Ba (2014): Adam: A Method for Stochastic Optimization. 

(使用例)

>>> a = pytensor.shared(1.)
>>> b = a*2
>>> updates = adam(b, [a], learning_rate=.01)
>>> isinstance(updates, dict)
True
>>> optimizer = adam(learning_rate=.01)
>>> callable(optimizer)
True
>>> updates = optimizer(b, [a])
>>> isinstance(updates, dict)
True

pymc.adamax

Adamax 更新

pymc.adamax(loss_or_grads=None, params=None, learning_rate=0.002, beta1=0.9, beta2=0.999, epsilon=1e-08)
変数
loss_or_gradsスカラー損失命令
paramslist更新命令を生成する変数
learning_ratefloat更新ステップのサイズを操作する学習率
beta1float最初のモーメントの指数減衰率
beta2float2番目のモーメントの指数減衰率
epsilonfloat数値安定のための一定値
戻り値
OrderedDict各パラメータのdictionaryマッピング

(使用例)

>>> a = pytensor.shared(1.)
>>> b = a*2
>>> updates = adamax(b, [a], learning_rate=.01)
>>> isinstance(updates, dict)
True
>>> optimizer = adamax(learning_rate=.01)
>>> callable(optimizer)
True
>>> updates = optimizer(b, [a])
>>> isinstance(updates, dict)
True

pymc.apply_momentum

更新モーメンタムを返す

pymc.apply_momentum(updates, params=None, momentum=0.9)
パラメータ
updates命令を更新するためのdictionaryマッピング変数
paramsモメンタムを適用する変数
momentumfloat適用するモーメンタムの量
戻り値
OrderedDictモーメンタムを更新した全パラメータのdictionaryマッピング

pymc.apply_netserv_momentum

Neterovモーメンタムを含む更新dictionaryを返す

pymc.apply_nesterov_momentum(updates, params=None, momentum=0.9)
パラメータ
updates命令を更新するためのdictionaryマッピング変数
paramsモメンタムを適用する変数
momentumfloat適用するモーメンタムの量
戻り値
OrderedDictモーメンタムを更新した全パラメータのdictionaryマッピング

pymc.momentum

確率的勾配下降のモーメンタム更新

pymc.momentum(loss_or_grads=None, params=None, learning_rate=0.001, momentum=0.9)
変数
loss_or_gradsスカラー損失命令
paramslist更新命令を生成する変数
learning_ratefloat更新ステップのサイズを操作する学習率
momentumfloat適用するモーメンタムの量
戻り値
OrderedDict各パラメータのdictionaryマッピング

(使用例)

>>> a = pytensor.shared(1.)
>>> b = a*2
>>> updates = momentum(b, [a], learning_rate=.01)
>>> isinstance(updates, dict)
True
>>> optimizer = momentum(learning_rate=.01)
>>> callable(optimizer)
True
>>> updates = optimizer(b, [a])
>>> isinstance(updates, dict)
True

pymc.nesterov_momentum

確率的勾配下降のNeterovモーメンタム更新

pymc.nesterov_momentum(loss_or_grads=None, params=None, learning_rate=0.001, momentum=0.9)

変数
loss_or_gradsスカラー損失命令
paramslist更新命令を生成する変数
learning_ratefloat更新ステップのサイズを操作する学習率
momentumfloat適用するモーメンタムの量
戻り値
OrderedDict各パラメータのdictionaryマッピング

(使用例)

>>> a = pytensor.shared(1.)
>>> b = a*2
>>> updates = nesterov_momentum(b, [a], learning_rate=.01)
>>> isinstance(updates, dict)
True
>>> optimizer = nesterov_momentum(learning_rate=.01)
>>> callable(optimizer)
True
>>> updates = optimizer(b, [a])
>>> isinstance(updates, dict)
True

pymc.norm_comstraint

最大重み基準の制限と勾配畳み込み

pymc.norm_constraint(tensor_var, max_norm, norm_axes=None, epsilon=1e-07)
変数
tensor_var更新のためのPyTensor命令
max_normscalartensor_varの基準の最大値を設定
norm_axesfloat基準を計算するための軸
epsilonfloat数値の安定性のための値、ゼロ除算を避ける
戻り値
TensorVariable重みベクトルに適応してサイズを変更したtensor_var入力

(使用例)

>>> param = pytensor.shared(
    np.random.randn(100, 200).astype(pytensor.config.floatX))
>>> update = param + 100
>>> update = norm_constraint(update, 10)
>>> func = pytensor.function([], [], updates=[(param, update)])
>>> # Apply constrained update
>>> _ = func()
>>> from lasagne.utils import compute_norms
>>> norms = compute_norms(param.get_value())
>>> np.isclose(np.max(norms), 10)
True

pymc.rmsprop

RMSProp 更新

pymc.rmsprop(loss_or_grads=None, params=None, learning_rate=1.0, rho=0.9, epsilon=1e-06)
変数
loss_or_gradsスカラー損失命令
paramslist更新命令を生成する変数
learning_ratefloat更新ステップのサイズを操作する学習率
rhofloat勾配移動平均減衰因子
epsilonfloat数値の安定性に付加する微小値
戻り値
OrderedDict各パラメータのdictionaryマッピング

アルゴリズムのより詳しい情報は以下の文献を参照してください。

Tieleman, at. and Hinton, G. (2012): Neural Networks for Machine Learning, Lecture 6.5 - rmsprop. Coursera

(使用例)

>>> a = pytensor.shared(1.)
>>> b = a*2
>>> updates = rmsprop(b, [a], learning_rate=.01)
>>> isinstance(updates, dict)
True
>>> optimizer = rmsprop(learning_rate=.01)
>>> callable(optimizer)
True
>>> updates = optimizer(b, [a])
>>> isinstance(updates, dict)
True

pymc.sgd

確率的勾配下降(SGD)の更新

pymc.sgd(loss_or_grads=None, params=None, learning_rate=0.001)
変数
loss_or_gradsスカラー損失命令
paramslist更新命令を生成する変数
learning_ratefloat更新ステップのサイズを操作する学習率
戻り値
OrderedDict各パラメータのdictionaryマッピング

(使用例)

>>> a = pytensor.shared(1.)
>>> b = a*2
>>> updates = sgd(b, [a], learning_rate=.01)
>>> isinstance(updates, dict)
True
>>> optimizer = sgd(learning_rate=.01)
>>> callable(optimizer)
True
>>> updates = optimizer(b, [a])
>>> isinstance(updates, dict)
True

pymc.total_norm_constraint

テンソルリストの再計量

pymc.total_norm_constraint(tensor_vars, max_norm, epsilon=1e-07, return_norm=False)
変数
tensor_vars再計量するためのテンソル
max_normlist合計の基準の閾値
epsilonfloatゼロ除算や微小値での除算を避けるための数値
return_normbool真ならば合計の基準を返す
戻り値
TensorVariable計量したテンソル変数
norm再計量するための入力事前変数の組み合わせ

アルゴリズムのより詳しい情報は以下の文献を参照してください。

Sutskever, I., Vinyals, O., & Le, Q. V. (2014): Sequence to sequence learning with neural networks. In Advances in Neural Information Processing Systems (pp. 3104-3112)

(使用例)

from lasagne.layers import InputLayer, DenseLayer
import lasagne
from lasagne.updates import sgd, total_norm_constraint
x = pt.matrix()
y = pt.ivector()
l_in = InputLayer((5, 10))
l1 = DenseLayer(l_in, num_units=7, nonlinearity=pt.special.softmax)
output = lasagne.layers.get_output(l1, x)
cost = pt.mean(pt.nnet.categorical_crossentropy(output, y))
all_params = lasagne.layers.get_all_params(l1)
all_grads = pt.grad(cost, all_params)
scaled_grads = total_norm_constraint(all_grads, 5)
updates = sgd(scaled_grads, all_params, learning_rate=0.1)

-pyMC API, ベイズ・確率プログラミング
-, , , , ,