読者です 読者をやめる 読者になる 読者になる

おかねはだいじ

家計簿ときどき日常

ごーるでんうぃーく4(ぷらいすれす)

前回のゴールデンウィークの日記から1週間は経ってしまいました。

あっという間に時間が過ぎていきます。

驚きです。

 

さてさて。

ゴールデンウィーク4日目(5月6日土曜日)の話なのでうろ覚えな点もあるのですが、振り返ってみたいと思います。

 

朝は何時頃に起きたか思い出せません。

ただ、シュタインズゲートを2話程度みた記憶があります。

結局、前日夕方あたりからで14話くらいみれたのではないかと思います。

 

アニメを見終わったあとは彼女は帰る支度です。

新幹線なので東京駅に向かう必要があるとのこと。

悲しいものです。

 

お昼ご飯はサイゼリヤです。

そこで彼女の化粧について言及しました。

僕は実のところ化粧が苦手なのです。

すっぴんのほうが良いと思うのですが、周囲の目や多くの女性が持っているであろう共通認識なるものがそれを許さないようです。

むむむです。

 

そういえば、僕はいろいろな面でマイノリティなところがあるのです。

東京駅に向かう電車では冠婚葬祭のあり方を議論したりもしました。

僕の方がなかなかうるさくなってしまいました。

はたから見たら口喧嘩に見えなくもありません。

サイゼリヤでもそんな感じだったと思います。

反省しないとです。

 

いやはや。

彼女の東京滞在最終日は楽しい思い出より微妙な思い出の方が多いかもです。

次回のテーマは、大人しく慎ましく、です。

今決めました。

 

そろそろ締めです。

振り返ってみれば、彼女と過ごした4日間はとても充実してました。

とはいうものの僕自身は基本的に僕のやりたいこと(数学とプログラミング)をやっていたので、もてなしの精神はかなり欠落してました。

今後どう改善していくか必見ですね。

 

 

ちなみに。

5日目の内容はあれです。

お昼に起きました。

んでゴールデンウィーク中にちょこちょこ進めてたLSTMっていうニューラルネットワークの一種の実装がひと段落。

実際は修正点だらけでその後数日かけてまともなものになりましたとさ。

 

ちゃんちゃん。

さんこうしょがほしくなる(145500円)

買ったけど読めてない参考書がいくつかあります。

内容が古くなる前に読破しておきたいものです。

 

お金については

月曜日

朝はおにぎりで100円

昼は吉野家、夜はすき家で1000円

火曜日

月曜日と全く同じで1100円

 

あと最適化数学の入門書が3300円でした。

 

先日購入したベイズ統計の本も2000円くらいです。

高いですね。

 

あとデータベースの入門書を買って、グループ開発研修にのぞみたいと思っていたり。

 

勉強がんばります。

すうがくめも3(numpyとネガティブサンプリング)

今回は数学というよりプログラミングな要素を含んだメモ。

はじめにnumpyでzeroベクトル(もしくは行列)について。

zeroベクトルはfor文の中で初期化した方が、ループごとに*=0するより速い可能性あり。

つまり、

for _ in range(10000):
    z_mat = np.zeros((1, 100000))

の方が↓より速い!!!

z_mat = np.zeros((1, 100000))
for _ in range(10000):
    z_mat *= 0

次にネガティブサンプリングの実装について。
まずはこれから登場する各文字たち。
V: 語彙数
H: 中間層の次元数
K: サンプル数 input_weight: (V, H) の行列
output_weight: (H, V) の行列

  1. 語彙idからinput_weightに直接アクセスして単語分散表現を抽出(注意: 内積をとるのではなく直接アクセスすること)
  2. 単語分散表現(1, H)とoutput_weightの内積を取る→ output_vec(1, V)
  3. output_vecから正解の単語idとサンプリングした単語idに対応した値をもったベクトルを用意 → sampled_vec(1, K)
    これは、長さがサンプル数+1のzeroベクトル
tmp_zero = np.zeros((1, k+1))

sampled_num = np.random.randint(0, V, K)

を用意して

sampled_vec = output_vec[(tmp_zero, sample_num)]

すればおけ
これは下記と異なり、sampled_vec = のように別の変数に代入してもよい。
4. 同様にoutput_weight(H, V)からも 正解の単語idとサンプリングした単語idに対応した場所にアクセスする
→ output_weightの[ [正解id, sample_id1, sample_id2, … ,sample_idK ] ]: 次元数は(H, K)次元

(ここで超要注意!!!

tmp = output_weight[[正解id, sample_1, sample2.,,,]] 

とすると、スライスされたことになりディープコピーになるので tmp に加算してもoutput_weightは更新されない!!!
5. 中間層の誤差は 出力層の誤差ベクトル(1, k)とoutput_weight [ [正解id, sampled_1, …] ]の転置行列(k, H) の内積をとる


h_err = np.dot(誤差ベクトル, sampled_vec)

こんな感じ。
でもこれ(ネガティブサンプリング)、実は構想の段階。

というのも、今日学んだのがたとえzeroベクトル(もしくは行列)の掛け合わせ、つまり非常にスパースなものでもその次元数が大きくなれば演算に非常に時間がかかるということ。
最初は下記のようなスパースなsampled_vecを取得しようとした。

k = 5

myvec = np.arange(100000).reshape(1,100000)

for _ in range(300000):
    z_mat = np.zeros((1, 100000)) 
    z_vec = np.zeros(k, dtype=np.int64) 
    sample_vec = np.random.randint(0, 100000, k)
    z_mat[(z_vec, sample_vec)] = 1
    sampled_vec = myvec * z_mat # ここが凄まじく時間かかってた
    z_mat = np.zeros((1, 100000))
    #a = softmax(myvec) # これは比較用

sampled_vecはoutput_vecから正解+サンプル数のところだけ1にして残り0になっているもの。
このコードでは、softmaxの8倍程度しか速度が出なかった。
(実はここでzeroベクトルの *=0 による初期化が遅いことも発覚した)  

まだまだ勉強しなければならないことはたくさんあります。

さぼりぎみです(140000円)

むむ。

雑な家計簿になりつつあります。

というかなっています。

どうやら火曜日からつけていないみたいです。

これはいけません。

日付が近い順に遡ってみたいと思います。

 

土曜日:

電車代330円

昼食500円(たくさんの菓子パン)

夕食500円(すき家)

 

金曜日

朝食100円(おにぎり)

昼食700円(ラーメンとチョコあんぱんとかいうお菓子)

夕食4000円(飲み会3500円とマジシャンに払った500円)

 

木曜日(この辺から曖昧です)

朝食100円(おにぎり)

昼食500円(吉野家)

夕食500円(すき家)

 

水曜日

木曜日と同じ感じ

 

火曜日

木曜日と同じ感じ

 

ってなわけで端数は切り上げして9500円です。

計算は間違ってしまっているかもしれませんが気にしないことにします。

あと電気代とガス代で合わせて5000円くらいでした。

 

買いたい参考書もあります。

まだまだ道は険しいです。

 

 

 

 

ごーるでんうぃーく3(ぷらいすれす)

3日目: エル・プサイ・コングルー

 

前日はけんかしてしまいました。

悲しいことです。

ですが、けんかするほど仲がいいとか言ったりもします。

なので仲がいいんです。

 

お昼あたりに起きました。

洗濯をしました。

僕はプログラミングをしたりもしてました。

そんなこんなで2時とか3時です。

お腹はぺこぺこ。

大戸屋という唐揚げ定食がおいしいお店に行きました。

満腹です。

 

帰ってからは彼女と一緒にシュタインズゲートをみました。

僕はだいぶ前にみていたのですが、やはりおもしろいですね。

大まかな流れは覚えていたのですが、ところどころの小ネタは新鮮な気持ちで楽しめました。

彼女は笑ったり怖がったりと表情ゆたか。

まるです。

 

そんなこんなで夕食を食べたりもしていたら、夜中の3時過ぎです。

あっという間です。

 

続く。

しょうきゅうし(125500円)

ちょっと休憩。

忘れないうちにメモしておきます。

 

日曜

定期代: 19000

お米: 2000

水: 150

すきや: 500

 

月曜

カフェ: 100

よしのや: 500

すきや: 500

 

ゴールデンウィークの続きについてはお待ちを。

ごーるでんうぃーく2(ぷらいすれす)

2日目: 彼女はカメラマン

 

前日はたくさん寝ました(彼女が)。

たしか10時ごろに起きたと思います。

お風呂に入ったり、洗濯したり(してないかも)でなんだかんだ12時を過ぎました。

 

さてさて。

2日目の予定は銀座シックスというデパート的な何かに向かうことです。

僕の中では1時前に家を出るという目標があったのですが、達成できてよかったです。

小さな喜びです。

 

彼女は空腹を訴えていました。

そんなわけで銀座シックスでイタリアンなお店にいきました。

とってもイタリアンだったと思います。

これまた彼女は満足満腹でよかったです。

いや、満腹だったかどうかはわかりません。

 

そこからは僕の新しい財布やらスマホケースやら探しです。

彼女が買ってくれるとの申し出です。

ですが、どうにも高い。

相場を(いまだに)よくわかってないですが、価格が高いのです。

銀座だからでしょうか。

服やら靴やらも高いやつはめちゃくちゃ高い。

財布は無印良品(扱ってると思った)あたりでいいや、ということになりスマホケースも見送りに。

もーまんたいです。

 

そして、銀座シックスの屋上へ。

庭園みたくなってます。

彼女はたくさん写真を撮ってました。

スマホと一眼レフを使いこなしてぱしゃりぱしゃり。

楽しそうでした。

写真を撮るのに夢中で、パンツが見えてたりもしました。

楽しかったです。

 

室内に戻ってからは彼女のお土産探し。

このあたりで僕の体力が尽きてきます。

お土産という文化が嫌いなのもあるかもしれません。

お菓子が売ってるところをうろうろしつつ、どうやらよさげなものが見つかったようです。

よかったよかった。

 

もともと銀座シックスを出たら本屋さんに向かう予定だったのですが、体力が尽きていたので帰ることに。

と思いきや、銀座シックス前に泊まっていたランボルギーニをみて元気に。

自己中心的なところが出てしまいました。

 

そして池袋のジュンク堂に行くことを提案。

そこで一冊の本を買ったのち、はま寿司に行こうかとなりました。

ですが驚異の2時間半待ち。

休日の人気アトラクションかな。

池袋駅のはま寿司おそるべしです。

 

なので道中にあったラーメン屋さんに行きました。

博多ラーメンのようです。

僕は外で食べるラーメンは基本的にハズレを引いてしまうのですが、珍しくとても美味しいものでした。

彼女はラーメンと焼き飯で凄まじい量です。

お昼のイタリアンでは満腹じゃなかったかもしれません。

 

それから帰宅です。

帰宅後は(帰宅中と)けんかしてしまいました。

お出かけをするとだいたいいつもこんな感じになってしまいます。

というのも、僕は外出がとても苦手なのです。

そして自己中心的でもあるので彼女にあたってしまいます。

 

彼女は寝ることにしました。

僕はというと、自分のやりたいことをやっていたと思います。

 

続く。