ド根性Python

( python | machine_learning | computer_vision | lifehack )

エントロピーと分散の直感的な違い

この記事は直感的理解を助けることを目的とし、正確性に欠くことがある。

分散もエントロピーも、直感的には、どちらも 確率変数の散らばり具合 を表してる。(本当は、散らばり具合という表現はよくないが。)

エントロピーは低ければ低いほど、固まっていて、高ければ高いほど散らばっている。

オナラで例えると、出したばっかは濃厚で、エントロピーが低く、しばらく経つと、広がっていき、エントロピーは高くなっていく。

それでは、分散とエントロピーはどういった違いがあるのか?

確率変数が単峰(uni-modal)な分布に従う場合、分布が尖るほど、エントロピーも分散も小さくなる。

しかし、多峰(multi-modal)な分布の場合、分布が尖ると、分散は高いが、エントロピーは低いとなる可能性がある。それぞれの山の分散が山の間より、十分小さい場合がそう。

以下のコードは、分散が同じだがエントロピーが異なる単峰な分布と、多峰な分布の図を表示する。

n = 100000

x = np.random.normal(-2, 0.1, int(n/2))
y = np.random.normal( 2, 0.1, int(n/2))
z = np.concatenate((x,y))

a = np.random.normal(0, z.std(), n)

fa, bins, _ = plt.hist(a, bins=100, label='uni')
fz, _, _ = plt.hist(z, bins=bins, label='multi')
plt.grid()
plt.legend()

f:id:hrsma2i:20180922231036p:plain

from scipy.stats import entropy

entropy(fz/n)
entropy(fa/n)

z.var()
a.var()

# entropy
# 1.6694403507782112 (multi)
# 3.8589971158298737 (uni)
#
# variance
# 4.01208858765457 (multi)
# 4.000793706567515 (uni)

どちらも、分散は同じだが、エントロピーは異なっている。

話題が若干、変わるが、この2つの分布は、分散だけでなく、平均もほぼ同じ。 しかし、分布の形はかなり異なる。 この2つの分布は、平均と分散だけを見るのは危険、データの可視化は重要ということを示す具体例にもなるだろう。

むちゃくちゃ適当な記事だが、「エントロピーと分散ってどう違うの?」って気になった人の理解の補助となればいい。

ニット・スウェット類の簡単な収納方法

かさばるニット、セーター、スウェット、パーカー類って収納大変ですよね。

 

今回は、簡単な方法をご紹介します。

 

まず、収納した様子がこちら。

 

f:id:hrsma2i:20180809224445j:image

 

【材料】

- ニトリ 吊り収納6段 999円

https://www.nitori-net.jp/store/ja/ec/8400187

- サナダ精工 A4ラック縦型 108円×6個

https://product.rakuten.co.jp/product/-/47a7a1027e162d42e369a35df408132e/?scid=sp_kwa_pla_dai

 

制作費1600円と、かなり安い値段で作れます。

意外と、こういう収納用品高いんですよね。3000円くらいが相場。

 

しまい方は、A4ラックに畳んだニットを乗せ、各段に入れるだけ!

 

f:id:hrsma2i:20180809224918j:image

 

各段、2〜3着も入ります。

 

 

この収納方法のいいところは、

- A4ラックのおかげで、出し入れが簡単

- 12着収納できて1600円と安い

- カーテンをつければ、 ホコリが被らない

- 衣替えが楽(というかしなくていい)

- ハンガーに吊るさないので、伸びない

- 見栄えもキレイ

 

ハンガーだと出し入れが簡単だけど、伸びてしまいます。

 

また、畳んで置いておいても、見栄えは悪いし、オフシーズンはホコリを被ってしまいます。かと言って、ケースにしまうと、取り出すのが面倒だし、衣替えも面倒。

 

そこで、いいとこどりしたのがこの方法!

 

現時点でベストな収納法だと思います。オススメです。

MetamaskでETH以外のトークンを送金する方法

Metamaskとは

Metamaskとは、Ethereum のウォレットになります。 導入も簡単でかなり使いやすいようです。

Metamaskについては以下の記事が参考になると思います。

virtualmoneylife.com

warucoin.com

ETH以外のトークンの送金

official で提供してる chrome拡張機能だと送金のUIがまだ実装されていないそうです。

MyEtherWalletとmetamaskを連携して、MyEtherWalletのUIを使うことで送金できます。

https://hf-files-oregon.s3.amazonaws.com/hdpconsensyssupport_kb_attachments/2017/08-22/9c024997-9a69-495c-9937-f0be8d7c617a/Screen%20Shot%202017-08-22%20at%2011.27.40%20AM.png

詳細はofficial のこのページの手順にしたがってください。簡単にできます。

https://support.metamask.io/kb/article/19-sending-tokens-with-metamask-and-myetherwalletsupport.metamask.io

JavaScriptでできること

jsでできること(特に自分がやりたいこと)をまとめました。

  • web application
    • フロントエンド React, Angularが熱いらしい
    • サーバーサイド Node.js
  • chrome | firefox の extension
  • スマホアプリ Monacaとか?
  • デスクトップアプリ Electron(Atom Editorなど)
  • Unityでのゲーム開発 (もう現在はc#だけ)
  • Google App Script Googleのサービスの連携だったり、マクロ的なやつ組める
  • bookmarklet 古いのかな?でも個人的に便利だと思いました。
  • nbextension データ分析でよく使うJupyter notebook の extensionも書ける!
  • Actions on Googleのintegrations で GoogleHomeなどをハックできる。

本当にいろんなことできますよね。

今まで、主にpythonしか触れてこなかったので、そろそろ、第2言語を学ぼうかと。

先日、recommendationをpythonで実装して、今更ながら高速化が必要な場面に遭遇したので、最近話題の、GoやRustも少し興味があったのですが、

それよりも、いろいろなものを作れる JavaScript を学ぶことにしました。また軽量言語ですが、できること多くて楽しそう!

python 勉強するときに、CheckiOプログラミングコンテスト的なをやってたのですが、しばらく前に、JSも出てたので、やっぱり重要になってきてるんですね。

研究室文献紹介 11/10 QRNN

  • RNNにCNN的要素を加えて、並列処理可能にし、学習速度を4x~16xまで高速化 させた研究。
    • 時刻t の LSTM cell への入力である、1時刻前のhidden state h[t-1] を、k時刻分前の入力 x[t-1],x[t-2],... x[t-k] で近似することにより、前cellの計算を待たずに各cell の hidden state の計算をできるようにし、並列処理を可能にした。
  • 今回の工夫により、RNNの隠れ層の 重みの視覚的解釈も容易 になった。
  • salesforceが出している。
  • 論文ではchainerが使用されている。
  • pytorch での実装も最近できた。

なお、以下発表 slide 中に自作の convolution の3D が出て来るが、以下のサイトで作成した。

www.tinkercad.com

ただ、 好きな view point から 2D 画像を export できない。 もっといい 3D 作図サービスがあったら教えてください!

https://arxiv.org/abs/1611.01576arxiv.org

github.com

初投稿 SalGAN

CNNを用いた saliency prediction(画像から人が画像のどこに注目してるかの予想)において、loss function に GAN を用いたもの。

https://arxiv.org/abs/1701.01081arxiv.org

imatge-upc.github.io

github.com