Pseudo Theory of Everything

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

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. 正則化たる所以

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

続きを読む

グラフの中心でAIを叫んだノード(なおAIは出ない) 〜あるいはnode2vecに至るグラフ理論〜

 

1 イントロダクション

本記事を読む前に、本章を読んでください。書いていくごとに、とにかくボリュームが多くなりました。
本章では「グラフとは何か?」と「本記事で扱うこと・扱わないこと」をまとめています。非常にボリューミーなので、自身の必要な知識・不要な知識を取捨選択して読んでいただくことをお勧めします。

1.1 そもそもグラフ理論とは

まず第一に、 グラフ理論は図示とは全く別のもの です。
恥ずかしながら、ある勉強会でグラフ理論のタイトルで話す登壇者の方がいて「より良い図示の方法をまとめたトークかなにかかな。」と思っていました(無事、話を聞いて「あぁ、そっちね。」となりました)。
本ブログの著者ふたりとも物理出身の門外漢故広い心で見守ってくれればと思います。

グラフ理論とは相互に関係し合うネットワークを数学的に扱う一学問です。

下記のようなシンプルなグラフネットワークの例を考えます。例えばECサイトにおいてユーザーが商品ページを閲覧します。その際の商品をノードに、ページ遷移をエッジとしてグラフを構築します。

f:id:pseudo-theory-of-everything:20190703212114p:plain
Figure 1: グラフの例

例えば、上記グラフで商品 \(u_2\) を閲覧したユーザーは、商品 \(u_1,\ u_3,\ u_7\) に遷移するエッジ(学習データとしてのユーザーの閲覧履歴)が存在します。集計ベースの共起確率に基づく商品レコメンドでは、商品 \(u_2\) を見ているユーザーには商品 \(u_1,\ u_3,\ u_7\) ばかりがオススメされることになります。ですが、グラフ理論に基づきネットワークを考慮すると商品 \(u_1,\ u_7\) を見ているユーザーは共通して商品 \(u_8\) を閲覧しているので、商品 \(u_8\) も 見えないエッジ としてレコメンドすることができるようになるわけです。

このような集計ベースではできないニュアンスが表現できるグラフ理論に可能性を感じ勉強を始めた次第です。

次章にて数学的なグラフの扱いについて解説します。続く章では、グラフの機械学習を用いたアプローチを紹介します。

続きを読む