d0tfi1e’s blog

趣味と日記

Simplest Implementation of Neural Net without using Deep Learning Libraries

codes are available here

When I was doing my CS assignment of implementing a neural net, I searched some implementations but none of them was cool. So I decided to implement one by myself.

Model

  • Only supports a model with fully connected layers

Implementations

For some unclear variables, please read the raw code.

Forward Propagation

Below you can see the implementation of iterative calculation a = y * W + b.

def forprop(self, xs):
        self.as_ = []
        self.ys = [xs]
        for i in range(self.n):
            a = np.dot(self.ys[-1], self.weights[i]) + self.biases[i]
            y = self.activation(a)
            self.as_.append(a)
            self.ys.append(y)

Backward Propagation

The math of backprop is much harder than that of forprop. When you implement it by yourself, I strongly recommend you to assert the dimensions of your matrices each time.

def backprop(self, xs, ts, eta=1.0):
        dLdy = self.lossdif(self.ys[-1], ts)
        for i in range(self.n):
            if i > 0:
                dLdy = np.dot(dLdy, self.weights[self.n - i].T)
            dyda = self.activationdif(self.as_[self.n - 1 - i])
            dLda = dLdy * dyda
            dadw = self.ys[self.n - 1 - i].T
            self.biases[self.n - 1 - i] -= eta * np.sum(dLda, axis=0)
            self.weights[self.n - 1 - i] -= eta * np.dot(dadw, dLda)

海外CS院進情報2018

ブログ初日なので書くことが多い。

なんで海外院進したいかというと、単に昔から海外が好きだから、というだけ。あんまり長く書いてもしょうがないよね。 

やっと院進を現実的に考え始めたのですが、かなり時期がギリギリになってしまいました。何をするかもよくわかっていないので、メモとして記事にしていきます。

ぼくは研究成果がなにもないので、PhDではなくMasterに出します。

行きたいところをいくつかまとめます。 Requirements欄に必要条件をまとめますが、さすがにResumeやTranscriptが必須なのは当然なので省略します。

Oxford

Admission Open

  • 9/3

Requirements

  • GPA: 3.55 / 4.0
  • TOEFL: 110以上、R24, L22, S25, W24以上
  • 2ページ以下の作文
  • 指定された課題
  • 2枚以上の推薦状

Remarks

  • Masterは1年の課程
  • GRE, GMAT不要
  • 1年の応募者は500人程度
  • 1/3の応募者がSkype面接に進む

ETHZ

Admission Open

  • 11/1

Requirements

  • GRE
  • TOEFL: 100以上
  • 2枚以上の推薦状

Remarks

MIT

Admission Open

  • 9/15

Requirements

  • TOEFL: 100以上
  • 作文
  • 3枚以上の推薦状

Remarks

  • GRE不要
  • IELTS is preferred over the TOEFL

Standord

Admission Open

  • by end of September

Requirements

  • 作文
  • 3枚以上の推薦状
  • GRE
  • TOEFL: 89以上

CMU

Admission Open

  • 8/31

Requirements

  • GRE
  • TOEFL: 100以上
  • 作文
  • 3枚以上の推薦状

UCBerkeley

Admission Open

  • in September

Requirements

  • GRE: 足切りはないが、合格者平均はQuantitativeで90%, Verbalで70%, Analyticalで3.5以上
  • TOEFL: 90以上。合格者平均は100以上
  • GPA: 3.0以上。合格者平均は3.7
  • 作文
  • 3枚以上の推薦状

Remarks

  • 合格率は12%

UCLA

Admission Open

Requirements

  • GRE
  • 3枚以上の推薦状
  • 作文

Remarks

  • TOEFLに関する記述がみつからないんだけど、さすがにありそう

就職すると思ってたからGPAダメダメだし、TOEFL110以上って実質ネイティブだし本当に厳しい てか推薦状って何枚ももらえるものなのかな

内定辞退かな

就活ってむずかしいですね。

就活中は面接ばっかりなので、志望動機を言ってるうちに自分自身を洗脳しちゃうところがありますね。

ぼくは収入が多いという理由だけで外銀の金利債権トレーダーを志望しましたが、今になって収入なんて二の次だということに気が付きました。

マーケット部門の初任給はだいたいベース900万+インセンティブという感じで、トレーダーの場合早くて2年程度でVice Presidentまで昇進するんですが、そうするとベース2500万ぐらいになるので実際数ある職業の中ではかなり若いうちから給料がいいです。

でも、ぼくはそんなにマーケットが好きというわけでもないんです。ぼくのことを知ってるひとならわかると思いますが、ぼくは興味のあることしか集中できないので業績を出せるとも思えませんし、何より今のCSの環境の居心地がすごくいいので離れたくありません。

CSを学ぶために情報科学科に進学したのにまだ何も生み出せてないですし、せっかくの環境がもったいないなという気がします。

トレーダーを志望した当初は、人生前半に苦労しつつも十分稼いであとは自由に暮らすぞーーと言っていましたが、冷静に自分の好きな職業に就けばそもそも一生自由ですし。

あとぼくはそんなに浪費するタイプじゃないので多分給料もらったところで使いませんしね。

もうちょっと落ち着くまで内定辞退は伝えないつもりですが、今は院進を考えています。