Pseudo Theory of Everything

データサイエンス初心者物理学徒の奮闘記

PyTorch Tutorials : 60 MINUTE BLITZ/自動微分モジュール

AUTOGRAD: AUTOMATIC DIFFERENTIATION

PyTorchをはじめとするニューラルネットワークのライブラリ(のおそらく全て)は自動微分の機能を持ち合わせています。PyTorchも例外ではなく、自動微分モジュール autograd が存在します。今回のチュートリアルはその autograd がどのように使われ、どのようなことができるのかに触れ、次記事でニューラルネットワークの学習に進みます。

続きを読む

PyTorch Tutorials : 60 MINUTE BLITZ/PyTorchでのテンソルの扱い

What is PyTorch?

ディープラーニングを行う多くの場面で多次元のテンソルが利用されます。PyTorchではそのテンソルをどのように扱われているのかに触れていきます。

続きを読む

PyTorch Tutorials : 60 MINUTE BLITZの紹介

PyTorchの最初のチュートリアルは「A 60 MINUTE BLITZ」です。
簡単な「PyTorchすごいぞ!!」的な2分のPyTorch紹介動画が貼られています。

www.youtube.com

 

動画によると「A 60 MINUTE BLITZ」には以下のようなコンテンツが用意されており、60分後にはPyTorchで基本的な使い方からモデル構築、学習と予測までできる様になっているという超有益な簡単チュートリアルとなっています。

  1. PyTorchでのテンソルの扱いの紹介
  2. 自動微分モジュールの紹介
  3. Neural Netの作り方紹介
  4. 実践として画像の分類問題を解く

チュートリアルページには各々のGoogle Colabへのリンクがあり、Googleアカウトを所有して入ればTutorialの内容をローカルの環境を整えなくてもオンラインで学ぶことができます。

  

本サイトでもはじめにColabへのリンクを貼り、内容に触れていきたいと思います。
早速、上記にあげたコンテンツに別記事で触れていきます。

完成し次第、上のリストにリンクを貼っていきたいと思います。

行列の分割と逆行列

現在、数人で「ガウス過程と機械学習」を読んでいます。本文中では、付録にある「行列の分解と逆行列」の公式を何度も用いて式展開をします。この付録では行列のブロック行列分解と、そのブロック化したベースで行列の対角化を扱っています。一方、多用されているものの、導出が載ってません。ご存知の方も多いと思いますが、そこまで重い計算でないので今回これを扱います。

今回の逆行列を知りたいターゲットは

\begin{align} {\it A} = \begin{pmatrix} {\it A_1} & {\it A_2} \\ {\it A_3} & {\it A_4} \end{pmatrix} \end{align}

のようにブロック行列に分割した行列です。

 

続きを読む

勉強会『Machine Learning and Physics Bridge』を開催します!

2020年2月10日に勉強会 Machine Learning and Physics Bridge を開催します! 素朴に「物理出身者を集めてお喋りしたら楽しい」という発想から、物理になんらかのゆかりがあるデータサイエンティストに向けて勉強会開催に至りました!! 「物理とデータサイエンスの架け橋になれないか」という願いを込めて

f:id:pseudo-theory-of-everything:20200111001357p:plain

mlpbridge.connpass.com

という名前をつけました。

以下詳細

続きを読む

PyTorch Tutorials

2020年の目標の1つとしてPyTorchの公式Tutorialsを読み進めてみようということになりました。
これまでディープなラーニングをする際、Kerasを使ってきました。正直tensorflowを生で扱える程の技術があるとは言い切れないレベルです。
一方、論文の実装例などを見ても、theano無き今PyTorchが増えてきているように感じています。さらにPreferred NetworksのChainer終了とPyTorchへのjoinを鑑みてもtensorflow・Keras優勢の日本でもPyTorch使いはどんどん増えていくでしょう。

そこでのPyTorch公式Tutorialsです。
ディープなラーニングもヨクワカラナイ我々は理論を知りたい一方、手が動きにくいという弱点も持っており「習うより慣れろ」精神を自らに植えつけようとの魂胆です。
基本的に1ページごとに1記事を投稿しますが、基本的に脱線しがちな2人ですので寄り道しつつ進めていこうと思います。

続きを読む

わしの思うリッジ回帰(L2正則化)と正則化法。

 

1 はじめに

最近、我々+数名でスパースモデリングという分野を勉強しています。詳細はまた別の記事にて紹介するにして、今回はスパースモデリングの前段階に当たる リッジ回帰(ridge regresion) に脚光を当てます1
読者には釈迦に説法かもしれませんが、リッジ回帰は L2 正則化とも呼ばれ機械学習の中でも非常にスタンダードな概念の一つになっています。しかし専門的に正則化法を扱ってみて、案外知らなかったことを知れたのでまとめました。
まず、リッジ回帰での損失関数は以下のような式で記述されます。

\begin{align} E = (y - X \vec{w})^2 + \alpha \vec{w}^T \vec{w} \end{align}

上記の損失を最小化するように係数の重みベクトル \(\vec{w}\) を推定します。解析的には \(\vec{w}\) について微分をしたものが \(0\) となる係数の重みベクトルを見つける最適化問題です。通常の正則化法を用いない回帰の場合は \(\alpha = 0\) の損失を考えることになります。通常の回帰問題から見ると、右辺の第2項は罰則項と呼ばれる項にあたります。上記の最適化問題の結果、

\begin{align} \vec{\hat{w}} = (X^T X + \alpha I)^{-1} X^T \vec{y} \end{align}

がリッジ回帰の解として得られます。ここまでは多くの技術ブログや本に載っています。しかし、「過学習が防げるようになります」等の大義名分のもと、「やってみた」になるわけですが、「いやいや、何で罰則項入れただけで過学習が抑えられるん?そもそも何で罰則項にこの形で重み自身を追加されるん?」って思っていました。

本編ではそれにお答えしましょう。以下のことが分かるようになります。

  • リッジ回帰の罰則項は、なぜあの形で導入されるのか
  • 汎化性能を上げるためとの理解があるが、それは本当なのか
  • 何で 正則化 と呼ばれるのか

上記の事柄を理解するために下記について順を追って説明していきます。

  1. 線形回帰モデルのおさらい
  2. リッジ回帰の自然な導出
  3. 正則化たる所以

「線形回帰モデルは流石に知っているよ!!」という方は次章にて一般的なことしか書かれていないので、飛ばしてもらっても問題ないと思います。ぜひ「リッジ回帰くらい知っているよ!!」という方にも、線形回帰モデルの章以降は読んでもらいたいです。ググってもあまり出てこないし、しっかり理解している方はそこまで多く無いのではないかと思っています。
(「正則化法」でググって最初のページに出てくるようになりたいなー……。)

続きを読む