エントロピーと分散の直感的な違い
この記事は直感的理解を助けることを目的とし、正確性に欠くことがある。
分散もエントロピーも、直感的には、どちらも 確率変数の散らばり具合 を表してる。(本当は、散らばり具合という表現はよくないが。)
エントロピーは低ければ低いほど、固まっていて、高ければ高いほど散らばっている。
オナラで例えると、出したばっかは濃厚で、エントロピーが低く、しばらく経つと、広がっていき、エントロピーは高くなっていく。
それでは、分散とエントロピーはどういった違いがあるのか?
確率変数が単峰(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()
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つの分布は、平均と分散だけを見るのは危険、データの可視化は重要ということを示す具体例にもなるだろう。
むちゃくちゃ適当な記事だが、「エントロピーと分散ってどう違うの?」って気になった人の理解の補助となればいい。
ニット・スウェット類の簡単な収納方法
かさばるニット、セーター、スウェット、パーカー類って収納大変ですよね。
今回は、簡単な方法をご紹介します。
まず、収納した様子がこちら。
【材料】
- ニトリ 吊り収納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ラックに畳んだニットを乗せ、各段に入れるだけ!
各段、2〜3着も入ります。
この収納方法のいいところは、
- A4ラックのおかげで、出し入れが簡単
- 12着収納できて1600円と安い
- カーテンをつければ、 ホコリが被らない
- 衣替えが楽(というかしなくていい)
- ハンガーに吊るさないので、伸びない
- 見栄えもキレイ
ハンガーだと出し入れが簡単だけど、伸びてしまいます。
また、畳んで置いておいても、見栄えは悪いし、オフシーズンはホコリを被ってしまいます。かと言って、ケースにしまうと、取り出すのが面倒だし、衣替えも面倒。
そこで、いいとこどりしたのがこの方法!
現時点でベストな収納法だと思います。オススメです。
MetamaskでETH以外のトークンを送金する方法
Metamaskとは
Metamaskとは、Ethereum のウォレットになります。 導入も簡単でかなり使いやすいようです。
Metamaskについては以下の記事が参考になると思います。
ETH以外のトークンの送金
official で提供してる chrome の拡張機能だと送金のUIがまだ実装されていないそうです。
MyEtherWalletとmetamaskを連携して、MyEtherWalletのUIを使うことで送金できます。
詳細は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 が出て来るが、以下のサイトで作成した。
ただ、 好きな view point から 2D 画像を export できない。 もっといい 3D 作図サービスがあったら教えてください!
初投稿 SalGAN
CNNを用いた saliency prediction(画像から人が画像のどこに注目してるかの予想)において、loss function に GAN を用いたもの。