Jupyter NotebookでPIL画像(QRコード)表示

すこし躓いたのでメモ。

qrcodeモジュールでQRコードを作成するとPIL画像になる。 Jupyter上でPIL画像を表示するには、matplotlibのimshowを使うようだ。 imshowは、numpy.array型を引数に取るのでPILを一度numpy.array型に変換するする。

という具合にnumpyまで登場して、わりと面倒だし煩雑。PIL対応して欲しい。

サポートベクターマシンとかラグランジュ未定乗数法とか

2日かけてはじパタ8章の冒頭を読んでなんとなーく理解してきた。

ラグランジュという言葉に怖気づきそうになったけれど、 要は2変数関数の微分Wikipediaの言葉をそのまま借りると「束縛条件のもとで最適化をおこなう解析学の手法」なんだね。

ラグランジュ未定乗数法では、等式制約しか扱えないが、KKT条件(カルーシュ・クーン・タッカー条件)を用いた手法(制約に条件をさらに加える)なら不等式制約も扱うことができる。

SVMの導出は不等式制約条件なのでKKT条件が必要。

2変数関数g(x,y)=0(等式制約)とかg(x,y)>=1(不等式制約)等々の条件下で、関数f(x,y)最大化or最小化するx,yを求めるときに使う手法。 これを主問題(primary problem)という。

そして主問題を式変換していくと、ラグランジュ未定乗数を変数にした関数の問題に置き換えられる。 これを双対問題という。 (双対ってなんだ?って思ったけど英語のduality problemのほうが直感的なきがする。)

  • 双対問題の最大値を求めると、主問題の最小値が求まるし
  • 双対問題の最小値を求めると、主問題の最大値が求まる。

つらつらと文字で書くと凄く難しく感じるけれど 「ある条件下で2変数関数の最適解を求める方法だよ」 「ある条件が不等式ならKKT条件も必要だよ」 「双対問題(duality problem)を解けば主問題(primary problem)も解けちゃう」 ということのようだ。

なるほどなぁー

さて概要はつかめたけど、式の直感的な解釈にまでは至っていないので、もうちょっと読み深めていこう。

はじパタ8章がむずかしい

突然だがはじめてのパターン認識を読んでいる。

はじめてのパターン認識

はじめてのパターン認識

 

6章辺りまでは親切な内容だったが7章あたりからエンジンがかかってきて8章から牙を向けてきた。8章はサポートベクターマシンの導出からはじまる。8.1.2のKKT条件でラグランジュ未定定数がでてきて戸惑っている。はて…ラグランジュどこかで聞いたことが… 物理だったかな?

聞きなれない単語と数式に困りっていたけおd、直感的な解釈はWikipediaがよかった。

ラグランジュの未定乗数法 - Wikipedia

丁寧な解説はこのあたりか

ラグランジュの未定乗数法と例題 | 高校数学の美しい物語

 

にしても今は数学の丁寧な解説書や解説ページが増えたのでいい時代になったなぁ。学生時代にほしかったよ。まぁでも、いま人生でいちばん数式を楽しめている感じがするのでジックリやっていこう。

 

あ。どうもはじめまして。