タグ

ブックマーク / www.hellocybernetics.tech (25)

  • 強化学習に出てくるベルマン方程式を理解しよう - HELLO CYBERNETICS

    はじめに ベルマン方程式の概要 最適制御と評価関数 最適制御 評価関数 価値関数 ベルマンの最適性原理 ベルマン方程式 価値関数の離散化 状態の時間発展再訪 ベルマン方程式 まとめ 最後に はじめに 強化学習の基礎に置かれている「ベルマン方程式」について、言葉は知っているが実はちゃんと理解していないという方は意外と多いのではないかと思われます。これを知っていようが知っていまいが、正直世の中の便利なフレームワークを活用すれば強化学習を実行することは可能であるためだと推測されます。 しかし、ある種の出発点になっているはずの基礎方程式を無視して、ガチャガチャ色々試してみても、なんだかフワついたままでモヤモヤしてしまうのではないでしょうか。少なくとも自分はそうです。 なので今回はベルマン方程式を基から丁寧に解説していきたいと思います。 ベルマン方程式の概要 細かい話をする前に、ベルマン方程式がど

    強化学習に出てくるベルマン方程式を理解しよう - HELLO CYBERNETICS
  • 評価指標入門の感想 - HELLO CYBERNETICS

    はじめに 誰向けか 顧客や自身の部下などにデータサイエンスを説明をしなければならない立場の人 機械学習のアルゴリズムには詳しいけどビジネス貢献ってどうやってやるの?という人 データサイエンスのプロジェクトを管理する人 機械学習やデータサイエンスをこれから始める人 感想 はじめに 下記の書籍を以前(結構時間が経ってしまいました)高柳さんから頂いていましたので感想を書きたいと思います。 評価指標入門〜データサイエンスとビジネスをつなぐ架け橋 作者:高柳 慎一,長田 怜士技術評論社Amazon 遅くなった言い訳としては、「個人としては多くの内容が既知であったこと」が挙げられるのですが、この書籍に書かれている内容が未知であるかあやふやな人にとっては当然非常に有用になっています。そして、何よりもその伝え方(書かれ方)が今になって素晴らしいと実感できたためこのタイミングで書くこととしました。 誰向けか

    評価指標入門の感想 - HELLO CYBERNETICS
    xiangze
    xiangze 2023/06/29
  • 台車型倒立振子(CartPole)に最適制御 - HELLO CYBERNETICS

    はじめに LQRによる制御 制御対象の状態空間モデル LQR LQRのコード例 未知の外乱が生じる場合 最後に はじめに 台車型の倒立振子でのシステム方程式は所与とし、これに対してLQRを用いて制御をする例を示します。 コード例はMATLABを用います。 LQRによる制御 制御対象の状態空間モデル まず制御対象の状態空間モデルは $$ \dot x = A x + B u $$ と与えられているとします。また観測方程式は $$ y = Cx + Du $$ です。台車式倒立振子の方程式は、倒立が成功している状態の近傍にて下記のように表されます。来は非線形方程式ですが、今回は線形化することでLQRを用いていきます。 $$ \begin{align} A _ {23} &= -\frac{3mg}{4M+m} \\ A _ {43} &= \frac{6(M+m)g}{4Ml+ml} \\

    台車型倒立振子(CartPole)に最適制御 - HELLO CYBERNETICS
  • クープマンモード分解とデータドリブン手法の紹介 - HELLO CYBERNETICS

    xiangze
    xiangze 2023/03/20
  • クープマン作用素と非線形状態空間モデルの線形化 - HELLO CYBERNETICS

    はじめに はじめに クープマン作用素と動的システム 動的システムの概要 クープマン作用素 クープマン作用素による線形化 まとめ クープマン作用素の固有関数 クープマン作用素の基底関数を選ぶ例 クープマン作用素の固有関数 元の状態空間モデルと固有関数の関係 まとめ 最後に クープマン作用素は動的システムの研究分野で大きな関心を集めています。クープマン作用素は、非線形システムを線形システムに変換するための強力なツールとして注目されており、機械学習やモデル予測制御などの分野での応用が期待されています。記事では、クープマン作用素を用いた非線形状態空間モデルの線形近似に焦点を当て、その理論的背景や応用例を紹介します。 概要として記事におけるクープマン作用素と非線形状態空間モデルの定性的な説明を載せておきます。 まず、クープマン作用素は、非線形な動的システムを適切な関数空間において線形化するために

    クープマン作用素と非線形状態空間モデルの線形化 - HELLO CYBERNETICS
    xiangze
    xiangze 2023/03/20
  • 【PyTorch・Pyro】モデリングレシピ - HELLO CYBERNETICS

    はじめに 単一の分布を使ったモデル 正規分布 同時分布の設計 同時分布からのサンプリング Pyroコード ベルヌーイ分布 同時分布の設計 同時分布からのサンプリング Pyroコード カテゴリ分布 同時分布の設計 同時分布からのサンプリング pyroコード 混合モデル ガウス混合モデル 同時分布からのサンプリング Pyroコード ディリクレ過程混合モデル(某折過程モデル) 同時分布からのサンプリング Pyroコード 最後に はじめに Pyroで確率モデリングを書くときには「確率モデリング自体を知ること」と「Pyroの書き方を知ること」の両方が必要です。今回はPyroの書き方に重点をおいて、とある確率モデルを記述するためのPyroでのコード例を適当に記載します。 約束事として、観測変数(データ) $x$ に対して、このデータの生成にまつわるパラメータをすべてひっくるめて $\theta$ と記

    【PyTorch・Pyro】モデリングレシピ - HELLO CYBERNETICS
  • JAXとPyTorchで勾配法とニュートン法を試す - HELLO CYBERNETICS

    はじめに 逐次更新による最適化 大枠 勾配法 数式 勾配法コード例 ニュートン法 数式 ニュートン法のコード例 はじめに 最近、しっかり学ぶ数理最適化を購入しました。 しっかり学ぶ数理最適化 モデルからアルゴリズムまで (KS情報科学専門書) 作者:梅谷 俊治発売日: 2020/10/26メディア: 単行(ソフトカバー) 1章→3章と読んでいく中で、元々馴染みの深い連続最適化の極々基的な手法である勾配法とニュートン法を試してみました。実装はJAXを使っています。こいつは現状、最高の自動微分ライブラリだと思っております(深層学習ライブラリという観点ではPyTorchの方が今の所使いやすい)。 普通、機械学習では二次微分なんてパラメータが多すぎてまともに計算できる見込みがないので、純粋なニュートン法なんて絶対に使わないのですが、その圧倒的な性能の高さを確認し、兎にも角にも勾配法の弱さを確認

    JAXとPyTorchで勾配法とニュートン法を試す - HELLO CYBERNETICS
  • Jax, PyTorch 直線探索付き勾配法 - HELLO CYBERNETICS

    はじめに モジュールインポート Jax 勾配関数と線形探索関数を準備 最適化実行 PyTorch 線形探索関数準備 最適化実行 結果 はじめに 前回は下記の記事で学習率固定で勾配法を実施しました。 www.hellocybernetics.tech 今回はウルフ条件を満たすような学習率を各更新時にバックステップで探索し、満たすものを見つけたら直ちにその学習率の更新するという形式で勾配法を実施します。 この記事ではJaxとPyTorchで収束までのステップ数や収束先等の結果はほぼ一致しましたが、速度が圧倒的にJaxの方が速く、PyTorchの計算グラフが変なふうになってしまっている可能性があります(こんなPyTorch遅いわけがない…!) どなたか見つけたら教えて下さい…。 モジュールインポート import jax import jax.numpy as jnp from jax impo

    Jax, PyTorch 直線探索付き勾配法 - HELLO CYBERNETICS
    xiangze
    xiangze 2022/11/13
  • 識別関数、識別モデル、生成モデルの違いを解説 - HELLO CYBERNETICS

    はじめに 記事の目的:共通の認識を持てるようにするため なぜパターン認識と機械学習を引用するか 機械学習の目的 分類問題と回帰問題 分類問題について 「識別関数」、「識別モデル」、「生成モデル」 識別関数 識別モデル 生成モデル 生成モデルのメリットデメリット はじめに 記事の目的:共通の認識を持てるようにするため 機械学習が大流行している中で、言葉の定義が曖昧になってきている印象があります。新しい分野が流行すれば、様々なところで言葉が使われ、結果として複数の意味で使われるようになり曖昧になってしまうのは必然です。実際私の周りでも、「ん、どういう意味で使っているんだ?」と思うケースがたまにあります。 ハッキリ言って言葉の意味などは使いやすいように変更されても構わないと思いますし、人間の使い方の統計によって定められていると言っても過言ではないです。 しかし、それでもどの言葉が何を意味している

    識別関数、識別モデル、生成モデルの違いを解説 - HELLO CYBERNETICS
  • 統計・機械学習による異常検知の本紹介 - HELLO CYBERNETICS

    はじめに 異常検知と変化検知 / 井手 剛・杉山 将 難易度 3 入門機械学習による異常検知 / 井手 剛 難易度 2 pythonによる異常検知 / 曽我部 東馬 難易度 1 まとめ はじめに 今回は統計・機械学習の実用的な応用として異常検知をテーマにしたを3冊紹介します。3冊紹介しますと言いつつ異常検知のを読み漁ったわけではなく、この3冊しか私自身所持しておりませんのでその点はご留意を。 今回の3冊はそれぞれ数学の難易度がいい感じに並べられるので、それぞれの具合に合わせて手にとってみると良いと思います。 ちなみに難易度の数字は、PRMLが4でベイズ推論による機械学習入門(須山ベイズ)が3.5くらいの感覚で書いています。 異常検知と変化検知 / 井手 剛・杉山 将 難易度 3 異常検知と変化検知 (機械学習プロフェッショナルシリーズ) 作者:井手剛,杉山将発売日: 2015/12/0

    統計・機械学習による異常検知の本紹介 - HELLO CYBERNETICS
  • ベイズニューラルネットワーク基本 - HELLO CYBERNETICS

    はじめに ベイズニューラルネットワーク 確率モデルとしてのベイズニューラルネットワーク ベイズニューラルネット 事後分布の推論 応用上の参考 はじめに まず下記の記事について、通常のニューラルネットワーク、正則化を用いたニューラルネットワーク、また、ニューラルネットワークのパラメータに事前分布を構えた点推定を行うことで正則化と同等の働きをすることを理解した上で解説をします。 www.hellocybernetics.tech 今回からは、ニューラルネットワークの具体的な構造は書かず、確率モデルとして記述していくことになるため、別途 www.hellocybernetics.tech www.hellocybernetics.tech www.hellocybernetics.tech なども理解していると望ましいです。 ベイズニューラルネットワーク 確率モデルとしてのベイズニューラルネット

    ベイズニューラルネットワーク基本 - HELLO CYBERNETICS
    xiangze
    xiangze 2020/11/21
  • NumPyroの基本を変化点検知で見る - HELLO CYBERNETICS

    はじめに NumPyro基 ライブラリの準備 確率分布 transoforms モジュール (tfp.bijector相当) 変化点検知 データ モデル 事前分布からのサンプリングでモデルの動作確認 MCMC推論 結果確認 はじめに TFUGベイズ分科会にてPPLについて話しました。改めてPPLを複数比較してみたことで、一層NumPyrpの書きやすさにほれぼれとしました。 www.hellocybernetics.tech 現状、PPLをまとめると 通常利用:Stan より低レベルを触れる研究用途:TensorFlow Probability 深層生成モデル及びベイズニューラルネットの変分推論 : Pyro 上記及び高速なMCMC : NumPyro という具合です。実際、速度やインターフェースの書きやすさを見るとNumPyroが個人的には抜けているのですが、一方でバックエンドがJaxで

    NumPyroの基本を変化点検知で見る - HELLO CYBERNETICS
    xiangze
    xiangze 2020/09/22
  • jaxのautogradをpytorchのautogradと比較、単回帰まで(速度比較追加) - HELLO CYBERNETICS

    はじめに 使う関数 autograd with pytorch autograd with jax Jax で単回帰 はじめに PyTorchとjaxの比較用。この手のライブラリを使うには、autogradの使い方を理解することが一番最初の仕事だと思われます。そして、そのautogradの時点で大きく思想が異なっているので、メモしておきます。 使う関数 下記をインポートしている前提で import torch import jax import jax.numpy as np from jax import vmap, jit, grad 下記の2次元上のスカラー関数 $$ f(x, y) = x ^ 2 - y ^ 2 + 2 x y $$ を微分していきます。 def f(x, y): return x**2 - y**2 + 2*x*y と書いておきます。 autograd with

    jaxのautogradをpytorchのautogradと比較、単回帰まで(速度比較追加) - HELLO CYBERNETICS
  • 確率的プログラミング言語 pyro 基本 - HELLO CYBERNETICS

    はじめに Pyro primitives 確率変数の実現値 sample 条件付き独立のベクトル化 plate 階層モデル 変分パラメータを扱う param poutine モデルの様子を把握する trace 条件付き分布の作成 condition まとめと変分推論の例 はじめに 当はTensorFlow2が世の中で使われるようになって、情報も増えるのが一番嬉しいのですが、ちょっと周囲の状況も含めてPyTorch続投の兆しが強いため、確率的プログラミング言語としてPyroを選択する可能性も出てきました。というわけでPyroの記事です。 https://pyro.ai/ Pyro PyTorchをバックエンドとした確率的プログラミング言語(PPL)です。PPLの名に恥じないくらい、確率モデリングが容易に可能で、TensorFlow Probabilityほど剥き出しのTensorをアレコレ

    確率的プログラミング言語 pyro 基本 - HELLO CYBERNETICS
    xiangze
    xiangze 2020/05/23
  • Jaxでガウス過程 + NumPyroでハイパーパラメータ推論 - HELLO CYBERNETICS

    モジュール データ ガウス過程 カーネル関数 予測 決め打ちハイパーパラメータでの予測 MCMC でのハイパーパラメータ推論 モデル 事前分布からのサンプリング 事後分布の推論 予測分布 ガウス過程関連の記事 モジュール import jax.numpy as np import jax from jax import random, grad, vmap, jit, lax import matplotlib.pyplot as plt import seaborn as sns import numpyro import numpyro.distributions as dist from numpyro import plate, sample, handlers from numpyro.infer import MCMC, NUTS, SVI, ELBO plt.style.us

    Jaxでガウス過程 + NumPyroでハイパーパラメータ推論 - HELLO CYBERNETICS
    xiangze
    xiangze 2020/05/10
  • 変分ベイズ法と償却推論:ローカルパラメータの効率的推論 - HELLO CYBERNETICS

    はじめに 変分ベイズ法あらまし 事後分布とその近似分布 第二種最尤推定 ローカルパラメータとグローバルパラメータ グローバルパラメータ 一旦脱線:同時分布のモデリング ローカルパラメータ 償却推論 ローカルパラメータの事後分布 変分パラメータを予測するモデルの導入 はじめに この記事は以下の知識を前提とします。 www.hellocybernetics.tech www.hellocybernetics.tech 余談ですが時間が経つのは速いもので、上記の記事を書いてから一年以上も経つのですね…。 変分ベイズ法あらまし 事後分布とその近似分布 まず、変分ベイズ法で近似推論しようとしている事後分布を、確率変数の実現値として得られているデータ $D$ と確率変数として扱うパラメータ $\theta$ を用い、確率変数として扱わないハイパーパラメータをまとめて $\alpha$ として下記のよう

    変分ベイズ法と償却推論:ローカルパラメータの効率的推論 - HELLO CYBERNETICS
    xiangze
    xiangze 2020/02/19
  • ニューラルネットワークを用いた近年の変分推論2 - HELLO CYBERNETICS

    はじめに ベイズ推論基 ベイズ推論 ベイズ予測分布 変分推論 変分推論のアルゴリズム Normalizing Flows 確率分布の変換規則 変分推論への組み込み 具体的な変換の例 planner flow radius flow inverse autoregressive flow flow VAE VAE 基 flow VAE はじめに この記事は下記の記事の続編です。ただし、下記の記事は変分ベイズの話の基的事項を、ニューラルネットワークを使いそうな雰囲気を醸しながら書いているに過ぎなく、既に理解している人はわざわざ読まなくてもいいと思われます。 ちなみにニューラルネットワークを使いそうな雰囲気を出しているというのは、潜在変数を含んだ統計モデルの同時分布 $p(x,z)$ に対してハイパーパラメータ $\theta$ があり、$p _ \theta(x, z)$ と明記しつつ、

    ニューラルネットワークを用いた近年の変分推論2 - HELLO CYBERNETICS
    xiangze
    xiangze 2019/11/02
  • 変分推論とVAEまでの流れ - HELLO CYBERNETICS

    はじめに 確率モデリング 例 ガウス分布から生起するデータ 回帰モデル ベイズモデリング MAP推定 変分推論 VAE Normalizing Flow はじめに 確率モデルから始めて、最近ようやくVAE系統までの流れを把握できたのでまとめておきます。 確率モデリング 確率モデリングは観測データ $X$ と 観測していない潜在変数 $Z$ が主な登場人物です。潜在変数 $Z$ というのはモデルの内部に潜んでいるのだが、データとして取り出すことはできない実体のある何かである可能性もありますし、実体として結びついていなくても、何かモデルの構造に入り込んでいるであろうものを抽象的に表しているだけの可能性もあります。これは設計者が決めることです。 また、確率モデルのパラメータ等も全て潜在変数というものだとしておきます。 例 ガウス分布から生起するデータ 観測データが $$ x_i \sim {\m

    変分推論とVAEまでの流れ - HELLO CYBERNETICS
    xiangze
    xiangze 2019/03/10
  • TensorFlow 2.0 のコードの書き方基本集(PyTorchとの比較) - HELLO CYBERNETICS

    はじめに 線形回帰と学習のコード データセット PyTorch TF2.0 違い 些細な違い:層の定義の仕方 些細な違い:ロス関数の書き方 大きな違い:勾配計算とパラメータ更新 ニューラルネットワークの簡単な書き方 PyTorch TF2.0 違い 畳み込みニューラルネットワーク PyTorch TF2.0 違い パディング 畳み込み層→線形層 traininigフラグ RNN PyTorch TF2.0 違い 大きな違い:多層化 些細な違い:Bidirectional 大きな違い:戻り値の並び 学習 はじめに 最近KerasからPyTorchに流れていく人たちが多く見受けられます。その中でて「Kerasで書いていたコードをPyTorchのコードで実装するにはどうすれば良いんだろう?」という声があります。要は、今まで使っていたフレームワークでやろうとしていたことを、別のフレームワークでやろ

    TensorFlow 2.0 のコードの書き方基本集(PyTorchとの比較) - HELLO CYBERNETICS
  • 【PyTorch】地味に知っておくべき実装の躓きドコロ - HELLO CYBERNETICS

    はじめに 自動微分に関すること 全バッチのLossを計算 Validation時に計算グラフを保持しない VariableのRank変更 viewメソッドが使えないケース(メモリの同一ブロックに格納されていない) ドロップアウト関数とドロップアウトクラス 使い分け?? 順伝播毎に異なるドロップアウト率を採用する ドロップアウトを用いたベイズ学習とベイズ予測分布の近似 自分で層を定義する 全結合層を作る 最後に はじめに 最近、TensorFlowのEagerが登場したため、Debugの難しさという欠点が緩和される見込みがあります。そこで私自身はPyTorchからTensorFlowに移行しようかなと思っているところです。 s0sem0y.hatenablog.com その前にPyTorchでところどころ実装時に躓いたりした部分をまとめておきたいと思います。PyTorchに自分自身が戻ってき

    【PyTorch】地味に知っておくべき実装の躓きドコロ - HELLO CYBERNETICS