投稿

2月, 2018の投稿を表示しています

ガンベル最大トリックを解説して実装してみる

イメージ
こんにちは、ぐぐりら( @guglilac )です。 久しぶりの投稿ですね。 ゆるーくやってます笑 今回はガンベル最大トリックについて解説して、試しに実装してみるとこまでやってみます。 実際に使うことはあんまなさそうだけれど、参考書読んでて気になったので。 自分用の備忘録も兼ねて。 ガンベル最大トリックとは とはいうものの、ガンベル最大トリックってなんぞ?という感じだと思います。 僕も参考書読んで初めて知りました。ぐぐってもそんな出てこないので普及した名前ではないのかも。別名があるのかなあ。 ガンベル最大トリックは、サンプリング手法の一種です。 深層学習の出力層で使うそうです。 深層学習の文脈では、活性化関数のsoftmax関数をかけて各クラスに属する確率分布を計算することがあります。 softmax関数に入力する前のデータをスコアと呼び、一般にいろんな大きさの値をとります。 softmax関数はこのスコアを受け取り、正規化することで成分の和が1の確率ベクトルを得ます。 スコアを$u$、確率ベクトルを$p$とすると、softmax関数はこのように計算します。 \[p_i=\frac{\exp u_i}{\sum_i u_i}\] この各クラスに属する確率のうち、一番高いクラスを出力する決定論的な出力を行うのが一般的ではありますが、この確率に応じて無作為にサンプリングしたクラスを出力するという構成を持つニューラルネットワークモデルもあります。 この際に用いられるサンプリング手法が、ガンベル最大トリックです。 ガンベル最大トリックを用いると、softmax関数をかけて確率を計算することなく、スコアからそのままサンプリングできます。 アルゴリズム ガンベル最大トリックの疑似コードを示します。 for i 1 to N:     $r$~U(0,1)     $g=-\log(−\log r)$     $z_i=u_i+g$ return argmax z  U(0,1)は0から1の間の一様分布で、rはその分布に従う確率変数です。 uは先ほど述べたスコアです。 このようにして各スコアに対して$z_i$を

ギターはじめて2年たったのでやってきたこと書いてみる(初心者向け)

こんにちは、ぐぐりら( @guglilac )です。 今回は,初のギターのお話をしようかなと思います. タイトルの通り,ちょうど2年前の今日にギターをはじめて触り,2年間あーでもないこーでもないと遊んでみてます笑 今はめっちゃうまいなんてことはもちろんないのですが,楽しめるぐらいにはなってきているので,これから始めようかなーなんて方の参考になればいいなと思います. 逆にガチプロの方は引き返してください,ここには何も面白いことは書いてないです笑 ではでは. はじめたきっかけ 最初に触ったギターはアコギです.ヤマハのです. 自分で買ったとかではなく,母親が父親に昔誕生日かなんかにプレゼントしたやつが家にあったのを見つけたのがきっかけです笑 父親は買ってもらったのにほんの少しやって挫折したらしい笑 まあ,結構挫折率高いらしいですしね.しゃーないのかな. 家を探し始めたのは,Bumpの影響です. Bumpに憧れて,あんな風に弾いてみたい!と思って探しました. 最初に練習したのもBumpですし,今でもBumpの曲はよく弾きます. こんなかんじなので,「始めに買うギターは何がいいかな?」という質問にはあまり答えられないです.ごめんなさい.. あ,アコギかエレキだったら,という質問もあると思いますが,迷っているならアコギがいいのではないかと思います. アコギがちゃんとできたらエレキもある程度はできると思うし,僕のように一人で楽しみたいという方にはアコギがいいでしょう. もちろんバンドを組むというのであればエレキのほうがいいでしょうけれど笑 趣味程度でひとりでやるならアコギのほうが断然おすすめですね 最初の難関Fコード 悪名高いFコード.これで何人の人がギターを諦め,何本のギターが押入れに眠ることになったのか...うちのギターもそうだったわけですが笑 ギター触り始めたころから,もしかしたらその前から,「Fコードっていうヤバイのがあるから最初は上手く鳴らなくても我慢するんだ!」といろんなサイトに書いてあるのをみていたので,我慢しようと思いました. やってみると,本当に鳴らない笑 びいいいいん,とか,ぴん,とか,ぽん,とか,とにかく変な音しか出ない.三味線とか琴