サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
おみそ汁
www.hellocybernetics.tech
はじめに 誰向けか 顧客や自身の部下などにデータサイエンスを説明をしなければならない立場の人 機械学習のアルゴリズムには詳しいけどビジネス貢献ってどうやってやるの?という人 データサイエンスのプロジェクトを管理する人 機械学習やデータサイエンスをこれから始める人 感想 はじめに 下記の書籍を以前(結構時間が経ってしまいました)高柳さんから頂いていましたので感想を書きたいと思います。 評価指標入門〜データサイエンスとビジネスをつなぐ架け橋 作者:高柳 慎一,長田 怜士技術評論社Amazon 遅くなった言い訳としては、「個人としては多くの内容が既知であったこと」が挙げられるのですが、この書籍に書かれている内容が未知であるかあやふやな人にとっては当然非常に有用になっています。そして、何よりもその伝え方(書かれ方)が今になって素晴らしいと実感できたためこのタイミングで書くこととしました。 誰向けか
はじめに データ分析:実用系 Kaggleで勝つデータ分析の技術 ウェブ最適化ではじめる機械学習 データ分析:因果推論 入門 統計的因果推論 計量経済学 大人の教養 世界標準の経営理論 科学的に正しい筋トレ 最強の教科書 落合務のパーフェクトレシピ はじめに 今回は、特にドメインを指定せず、読むと間違いなく誰にでも勉強になるであろうと感じた書籍を紹介します。 データ分析:実用系 Kaggleで勝つデータ分析の技術 Kaggleで勝つデータ分析の技術 作者:門脇 大輔,阪田 隆司,保坂 桂佑,平松 雄司発売日: 2019/10/09メディア: 単行本(ソフトカバー) "Kaggleで勝つ"と題名にはありますが、データ分析、特に予測モデルを作るようなケースで重要な基礎知識が実践的に学ぶことができる非常に良い本となっています。例えば、交差検証といえば、基本的には汎化誤差の推定量として統計学の本に
はじめに モジュールインポート Jax 勾配関数と線形探索関数を準備 最適化実行 PyTorch 線形探索関数準備 最適化実行 結果 はじめに 前回は下記の記事で学習率固定で勾配法を実施しました。 www.hellocybernetics.tech 今回はウルフ条件を満たすような学習率を各更新時にバックステップで探索し、満たすものを見つけたら直ちにその学習率の更新するという形式で勾配法を実施します。 この記事ではJaxとPyTorchで収束までのステップ数や収束先等の結果はほぼ一致しましたが、速度が圧倒的にJaxの方が速く、PyTorchの計算グラフが変なふうになってしまっている可能性があります(こんなPyTorch遅いわけがない…!) どなたか見つけたら教えて下さい…。 モジュールインポート import jax import jax.numpy as jnp from jax impo
はじめに 必要なパーツ 予測 観測更新 逐次ベイズフィルタの流れ 前提 流れ 予測の密度関数をどう使うのか 各パーツの式展開 予測の密度関数 更新の密度関数 まとめ はじめに 逐次ベイズフィルタの基本的な概要は極めて単純です。しかし非常に強力です。 制御の分野では遥か昔から状態観測器としてカルマンフィルタとして知られる逐次ベイズフィルタが有効活用されてきました。また、数理モデルによる演繹的なシミュレーションと、観測データによる機能的な推測を統合したデータ同化と呼ばれる分野でも、主にパーティクルフィルタが強力なツールとして利用されています。また自己位置推定、SLAMなど近年の自律移動ロボット技術に欠かせない物となっています。 必要なパーツ 逐次ベイズフィルタに必要なパーツは下記の通り、たったの2つです。これらを紹介する前に記法について整理しておきましょう。 時刻 $t$ での状態を $x _
はじめに 逐次更新による最適化 大枠 勾配法 数式 勾配法コード例 ニュートン法 数式 ニュートン法のコード例 はじめに 最近、しっかり学ぶ数理最適化を購入しました。 しっかり学ぶ数理最適化 モデルからアルゴリズムまで (KS情報科学専門書) 作者:梅谷 俊治発売日: 2020/10/26メディア: 単行本(ソフトカバー) 1章→3章と読んでいく中で、元々馴染みの深い連続最適化の極々基本的な手法である勾配法とニュートン法を試してみました。実装はJAXを使っています。こいつは現状、最高の自動微分ライブラリだと思っております(深層学習ライブラリという観点ではPyTorchの方が今の所使いやすい)。 普通、機械学習では二次微分なんてパラメータが多すぎてまともに計算できる見込みがないので、純粋なニュートン法なんて絶対に使わないのですが、その圧倒的な性能の高さを確認し、兎にも角にも勾配法の弱さを確認
はじめに 不偏性 推定量 不偏推定量 不偏性を有さない推定 正規分布の分散の推定 不偏推定量は必ずしも良い推定量ではない バリアンス バイアスとバリアンス 両者を考慮した平均二乗誤差 正規分布の不偏分散と標本分散の比較 はじめに つい最近、統計を用いた分析の講義的なものを聴きました。 統計分析は目的に応じて手法を適宜使い分けなければなりません。 その講義では、分散の計算には標本分散ではなく不偏分散を使いましょうという具合の話がありました。きっとその分野では不偏分散を扱ったほうが良い分析ができるということなのでしょう。ところが、多くの人は単にそれを鵜呑みにしているだけだったりしないでしょうか。 不偏分散がなぜ良いのか、あるいは本当に良いのであろうか、ということは一考の余地があります。今回は推定量の良し悪しの基準の1つである不偏性について説明し、分散の推定を例にその不偏性をもたらす推定が必ずし
はじめに データと確率分布 データと確率モデル 推定方法 最尤推定法 ベイズ法 はじめに 今回は具体的な手法の詳しい解説やコードなどは一切出てきません。 ある程度の数式(確率分布や微分積分、線形代数)に抵抗の無い方が、最尤推定とベイズ推定はどういうものであるのかを初めて学ぶのに無理の無い内容になっていると思われます。 データと確率分布 まずは基本事項としてデータと確率分布について説明します。 確率論でデータを扱う場合には、データはとある真の確率分布 $\phi(\cdot)$ から生じているものであると考えます。具体的には、今着目しているデータ $x$ は確率変数 $X$ が $\phi(X)$ に従っており、その実現値として $X = x$ と定まったことによって得られていると考えます。このことを $$ x \sim \phi(X) $$ と表現します。更に確率変数が複数あるケースを考え
はじめに はじめに 作って遊ぶ機械学習。 の須山さんにお誘いを受け、TensorFlow User Group(通称TFUG)でPPLについてお話をしました。 その資料へのリンクを貼っておきます。また、今後もこの動向について興味がある方はぜひconnpassのTFUGにもご参加ください。 tfug-tokyo.connpass.com speakerdeck.com
はじめに NumPyro基本 ライブラリの準備 確率分布 transoforms モジュール (tfp.bijector相当) 変化点検知 データ モデル 事前分布からのサンプリングでモデルの動作確認 MCMC推論 結果確認 はじめに TFUGベイズ分科会にてPPLについて話しました。改めてPPLを複数比較してみたことで、一層NumPyrpの書きやすさにほれぼれとしました。 www.hellocybernetics.tech 現状、PPLをまとめると 通常利用:Stan より低レベルを触れる研究用途:TensorFlow Probability 深層生成モデル及びベイズニューラルネットの変分推論 : Pyro 上記及び高速なMCMC : NumPyro という具合です。実際、速度やインターフェースの書きやすさを見るとNumPyroが個人的には抜けているのですが、一方でバックエンドがJaxで
はじめに 確率モデリング 確率変数間の関係性記述 ベイズの定理と条件付き分布 関係性の記述と事後分布の導出 いろいろなパターンの練習 パターン1 パターン2 同時分布とグラフィカルモデル 基本事項 すべて互いに関連 すべて互いに独立 有向グラフ化 関連を断ち切ることによるモデリング 最後に はじめに 確率モデリングでは、複数の確率変数間の関係性を記述するということが必要になります。 そうして確率変数間の関係性を記述したら、あとは観測できているデータは確率変数を所与としてしまい、その観測データの条件付き分布により、他の確率変数の事後分布を表現するということを行います。 この事後分布を求める部分をいわゆる学習と呼び、その後、事後分布を用いて予測したい変数の値を分布として(あるいは分布からのサンプリングとして)出力させることで予測を行います。 しかし、多くの確率モデリングの初学者は、実は確率変数
はじめに Pyroで時系列モデリング モジュールのインポート データ 時系列モデルの書き方 学習 検証(バックテスト) 予測 はじめに 最近はGoogle/Jaxに興味を持ってしまっており、その上にあるNumPyroが確率プログラミングとしてもかなり有用そうである…という思いが強くある状態でした。NumPyroとはPyTorch上に構築された確率プログラミングライブラリPyroをJaxのnumpy上に構築したライブラリです。 numpyroの最大の利点は、jax.jitをNUTSのアルゴリズム高速化にフル活用しており、圧倒的にMCMCサンプリングが速いことです。もはやPyroの上位互換か…と思っていたところなのですが、実際私はJaxの関数型のパラダイムに不慣れで、以前PyTorchの方が使いやすいと感じている状態です。 そこでふと、Pyroに再び戻って見ると、あいも変わらずMCMCは遅い…
はじめに 使う関数 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
モジュール データ ガウス過程 カーネル関数 予測 決め打ちハイパーパラメータでの予測 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
はじめに 変分ベイズ法あらまし 事後分布とその近似分布 第二種最尤推定 ローカルパラメータとグローバルパラメータ グローバルパラメータ 一旦脱線:同時分布のモデリング ローカルパラメータ 償却推論 ローカルパラメータの事後分布 変分パラメータを予測するモデルの導入 はじめに この記事は以下の知識を前提とします。 www.hellocybernetics.tech www.hellocybernetics.tech 余談ですが時間が経つのは速いもので、上記の記事を書いてから一年以上も経つのですね…。 変分ベイズ法あらまし 事後分布とその近似分布 まず、変分ベイズ法で近似推論しようとしている事後分布を、確率変数の実現値として得られているデータ $D$ と確率変数として扱うパラメータ $\theta$ を用い、確率変数として扱わないハイパーパラメータをまとめて $\alpha$ として下記のよう
はじめに 単一の分布を使ったモデル 正規分布 同時分布の設計 同時分布からのサンプリング Pyroコード ベルヌーイ分布 同時分布の設計 同時分布からのサンプリング Pyroコード カテゴリ分布 同時分布の設計 同時分布からのサンプリング pyroコード 混合モデル ガウス混合モデル 同時分布からのサンプリング Pyroコード ディリクレ過程混合モデル(某折過程モデル) 同時分布からのサンプリング Pyroコード 最後に はじめに Pyroで確率モデリングを書くときには「確率モデリング自体を知ること」と「Pyroの書き方を知ること」の両方が必要です。今回はPyroの書き方に重点をおいて、とある確率モデルを記述するためのPyroでのコード例を適当に記載します。 約束事として、観測変数(データ) $x$ に対して、このデータの生成にまつわるパラメータをすべてひっくるめて $\theta$ と記
はじめに 特異値分解 定義 特異値分解の嬉しさ 行列の低ランク近似 主成分分析の解法 行列による増幅率を定義 特異値と特異ベクトルの実態 最後に はじめに 予め断っておきます。私はE資格を持っていませんし受けたこともありません。 なんか特異値分解は知識として必須らしいという話だけ聞きました。なのでタイトルに入れました(完全に検索対策である)。 タイトルは動機不純として…、特異値分解はデータ分析にしても信号解析にしても、線形代数での必須知識だと思われるのでここで解説しておきます。 特異値分解 定義 特異値分解は定義だけ述べれば、行列 $\mathbf X \in \mathbb C ^ {m \times n}$ に対する下記で表される分解手法です。 $$ \bf X = U \Sigma V ^ * $$ ここで $\mathbf U \in \mathbb C ^ {m \times m
はじめに データとモデル 確率モデル 確率モデルを作る 複雑なモデルを使うことが最善手であるか モデルの具体的な作り方 モデルの仮定 アンサンブルモデル 点推定モデル 最尤推定 制約付き最尤推定※ (最大事後確率推定) ベイズ予測分布と点推定 ベイズ統計学 ベイズ予測分布を得ることの意義 ベイズ統計学の主題 特異モデルと正則モデル ベイズ統計学のまとめ はじめに ベイズだの頻度論だので盛り上がっているので、ぶん殴られる覚悟で書いてみます。 データとモデル 観測値がランダムに見える場合、それを確率変数 $X$ として扱います。 さて、今、$X$ には我々が知ることのできない真の分布 $q(X)$ があるとしましょう。もしも、$X$ を無限回観測し満遍なくデータを集められるとすれば、$q(X)$ の形状を把握することができるかもしれません。 ところが、そんなのは幻想であって実際に無限回の観測を
ベイズ統計学のモデリングにおける登場人物 同時分布 統計モデルと事前分布 尤度関数 事後分布 周辺尤度 まとめ 寄り道 ベイズ予測分布 回帰の例 同時分布設計 事後分布 ベイズ予測分布 ベイズ統計学のモデリングにおける登場人物 同時分布 ベイズ統計学で最もモデル設計者が意識しなければならないのは観測できる確率変数 $X$ と観測できない確率変数 $Z$ の同時分布です。 $$ p(X, Z) $$ ベイズ統計学でのモデリングとは主に、この同時分布にどのような仮定を与えるのかということに尽きます。 統計モデルと事前分布 例えば、 $Z$ が気温、$X$ がある計測機器を用いた気温の測定結果を表すものとしましょう。すると、実質的な気温 $Z$ の周りに、適当なばらつき $\sigma ^ 2$ で測定結果 $X$ が定まるようなことが考えられます。このモデルは、例えば下記のように平均 $Z$
PyTorch 確率的プログラミング GPyTorch Pyro BoTorch Ax Training Wrapper pytorch lightning ignite Catalyst skorch Computer Vision kaolin pytorch3d kornia PyTorch pytorch.org いわずとしれたディープラーニングフレームワークです。最近、国産のフレームワークであるChainerの開発元であるPFNが、PyTorchへの移行を示したこともあり、一層認知度が高まったように思います。すでに研究分野ではTensorFlowよりも高いシェアを誇っている状態であり、今後、プロダクション方向にも整備が行くようで更に注目しておくべきでしょう。 ディープラーニングフレームワークと言いつつ、多次元配列の計算を自在に行うことが可能な自動微分ライブラリとして活用することも
はじめに Pyro primitives 確率変数の実現値 sample 条件付き独立のベクトル化 plate 階層モデル 変分パラメータを扱う param poutine モデルの様子を把握する trace 条件付き分布の作成 condition まとめと変分推論の例 はじめに 本当はTensorFlow2が世の中で使われるようになって、情報も増えるのが一番嬉しいのですが、ちょっと周囲の状況も含めてPyTorch続投の兆しが強いため、確率的プログラミング言語としてPyroを選択する可能性も出てきました。というわけでPyroの記事です。 https://pyro.ai/ Pyro PyTorchをバックエンドとした確率的プログラミング言語(PPL)です。PPLの名に恥じないくらい、確率モデリングが容易に可能で、TensorFlow Probabilityほど剥き出しのTensorをアレコレ
はじめに 変分法 変分 微分との差異 微分可能 変分と汎関数 補足 機械学習 関数近似 変分ベイズ法 はじめに 変分法 変分 変分の概念は下記の通りです。 引数 $x$ を受け取る関数 $F[x]$ に関して、引数を $x + h$ へ変えることを考えましょう。すると、引数を変えたことによる $F$ の変化量は $$ \delta F[x] = F[x + h] - F[x] $$ と表すことができます。この $\delta F[x]$ を変分と呼びます。 微分との差異 さて、上記までの議論を見てみると、これは普通にいつも考える微分と何も違いが無いように見えるでしょう。 実際、微分とは、関数 $f(x)$ の引数 $x$ を $x + h$ と変化させた時の $f$ の変化量 $$ {\rm d} f = f(x + h) - f(x) $$ のことを指すのでした。何やら文字の書き方がちょ
はじめに カルマンフィルタの意義 TFPでのカルマンフィルタ モジュール データの生成 TFPで線形状態空間モデルを作る カルマンフィルタの実行 追加実験 追加実験1:状態と観測の次元が異なるケース 追加実験2: 不可観測系 最後に はじめに カルマンフィルタを解説する記事はたくさんあります。 詳しい理論や、細かい実装を知りたい場合は下記の記事などを参考にすると良いでしょう。 www.hellocybernetics.tech www.hellocybernetics.tech qiita.com tajimarobotics.com 今回はTFPのdistributionsモジュールの中にある、比較的高レベルなAPIであるLinearGaussianStateSpaceModelというものを使い方の備忘録と、カルマンフィルタの意義の軽い説明です。特に状態観測器としての側面を理解することに
はじめに 微分 微分係数 導関数 線形近似 多変数関数の微分 微分の通常の表記 陰関数 陰関数 陰関数の微分 多変数入力の陰関数微分 多変数出力の陰関数 多入力多出力の陰関数 はじめに なんだかディープラーニングには陰関数微分が使われるということで、まとめて書いておきます(ディープラーニングはこれに加えて合成関数の式が入り込むので、もう少し作業的に面倒だと思われるが)。 ここでも、私の信念である、微分は線形近似である、というようなことを強調しつつ書いています。まあ、それは好みなのであまり気にせず、ディープラーニングの勉強の一環として、あるいは多変数関数の微分やベクトル解析の勉強の一環としても読めると思います。 ちなみに陰関数かどうかはともかくとして、この程度の話が分かると、 www.hellocybernetics.tech www.hellocybernetics.tech など、機械学
はじめに Mobile Support Quantization support C++ Frontend Improvements ONNX Exporter Improvements 所感 はじめに これまでPyTorchといえば柔軟にネットワークが変更でき、素早いプロトタイプの実験が可能な研究志向の強いDeepLearningフレームワークという印象が強かったです。 しかし今回v1.3をリリースし、プロダクト側の強化の姿勢を大きく見せてきたように思います github.com Mobile Support これまではTFliteがモバイルサポートで突出している状況でしたが、PyTorchが公式にモバイルのサポートを提供し始めました。 今回のアップデートで、モバイルでTorchScript推論が動くようにサポートされました。TorchScriptはPyTorchで書いたコードをtorc
はじめに 中心極限定理 標本数 なぜに標本数を必要とするか 標本平均 標本平均の分布の極限 中心極限定理の誤用 データで見る標本平均の分布 ある標本の分布(データの分布) とある標本の代表値:標本平均 1000人の研究者に協力してもらう 本当の中心極限定理 補足 最後に はじめに 中心極限定理と呼ばれるガウス分布にまつわる恐ろしく強力な定理に関して、勘違いが出てくることが多いようなので、勘違いが出る理由と実例について簡単に見ます。 中心極限定理 中心極限定理とはコトバに「極限」が含まれている通り、何かを無限大に飛ばしたときに何かが(非自明な)極限値を持つことを述べた定理です。 標本数 ここで重要なコトバとして「標本数」というのを見ておきましょう。 不慣れな場合だと、標本とかサンプルと言ったとき、何か1つのデータのように思ってしまうのではないでしょうか。統計学のコトバとして使わない限りは、例
はじめに 変分推論 モデルの書き方 立てたモデルに対する変分近似分布 変分推論 EMアルゴリズムの発展としての変分推論 変分推論の違った見方 近似したいという動機 近似のための損失関数の分解 期待値のサンプリングによる近似 事前分布と変分近似分布のKLダイバージェンス 最後に はじめに ここではベイズ推論(データからベイズ予測分布を得る手続き)をある程度知っている前提で、ベイズ推論を具体的に実行する手立てとしての近年の変分推論について適当にまとめておきます。 ベイズ推論では観測データ $\bf X$ から未観測の潜在変数 $\bf Z $ とモデルのパラメータ $\bf w$ の事後分布 $$ p({\bf Z, w}, \mid {\bf X}) $$ を求め、新たなデータ $\bf x$ に関する統計モデル $p({\bf x}\mid {\bf Z, w})$ の期待値(すなわち、事
はじめに 学習の目的と試み 真の目的に対する我々の現実 データのサンプリング(採取) 真の目的と推定・学習の関係 具体的な学習の試み 正則化による統計モデルの制限 ハイパーパラメータの調整 最終評価 (補足)ベイズ推論 理論的な学習の評価 これまでの話との関連 汎化誤差の近似 最後に はじめに 機械学習、統計分析に少しでも触れたことのある方は「過学習」という言葉を聞いたことがあるでしょう。 データに対してパラメータをうまくフィッティング させすぎている場合 に生ずる現象です。 過学習が起こらないように上手に正則化などを用いて、学習できる能力を制限したり、日夜ハイパーパラメータの調整に明け暮れている人もいるかもしれません。今回は訓練誤差と汎化誤差という2つの誤差をしっかりと理解して、なぜに過学習なるものが起こるのかを見ていきます。 そうすることで、普段行っている「学習」であるとか「推定」であ
はじめに ガウス過程(GP) GPyTorchを使ったモデリング コード概要 学習コード データとモデルの準備 学習と結果 ハイパーパラメータの振る舞い lengthscale outputscale 最後に はじめに 今回はガウス過程の説明を最低限に行いつつ、GPyTorchを使ってガウス過程をさらっと見てみようという記事です。 関連記事に以下のようなものがあるので参考にしてみてください。 www.hellocybernetics.tech www.hellocybernetics.tech ガウス過程(GP) GPは関数を生成する確率分布(確率過程)であり、平均関数 $m$ と共分散関数 $K$ をパラメータとして関数 $f$ を生成する。 $$ f \sim {\mathcal GP} (m, K) $$ GP回帰では上記で生成された関数を用いて、入力データ $x$ と出力データ $
はじめに ベルマン方程式の概要 最適制御と評価関数 最適制御 評価関数 価値関数 ベルマンの最適性原理 ベルマン方程式 価値関数の離散化 状態の時間発展再訪 ベルマン方程式 まとめ 最後に はじめに 強化学習の基礎に置かれている「ベルマン方程式」について、言葉は知っているが実はちゃんと理解していないという方は意外と多いのではないかと思われます。これを知っていようが知っていまいが、正直世の中の便利なフレームワークを活用すれば強化学習を実行することは可能であるためだと推測されます。 しかし、ある種の出発点になっているはずの基礎方程式を無視して、ガチャガチャ色々試してみても、なんだかフワついたままでモヤモヤしてしまうのではないでしょうか。少なくとも自分はそうです。 なので今回はベルマン方程式を基本から丁寧に解説していきたいと思います。 ベルマン方程式の概要 細かい話をする前に、ベルマン方程式がど
次のページ
このページを最初にブックマークしてみませんか?
『HELLO CYBERNETICS』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く