USPS download link has changed

if you have “wget can’t download – 404 error” when downloading USPS dataset, please update url.

OLD

“https://raw.githubusercontent.com/mingyuliutw/CoGAN_PyTorch/master/data/uspssample/usps_28x28.pkl”


New

“https://raw.githubusercontent.com/mingyuliutw/CoGAN/master/cogan_pytorch/data/uspssample/usps_28x28.pkl”

 

 

Pytorch “Trying to backward through the graph a second time, but the buffers have already been freed. Specify retain_graph=True when calling backward the first time.”

 

エラーメッセージ


対策


解説

x=layer[i](x) のように計算処理を進めていってLOSS計算したあとにbackword()を実行するとxの算出結果がクリアされてしまう。

これは悪意があるわけではなくメモリ節約するための仕様。

しかし、Multi Task Learning のときによく発生するのだが、後半部分でLayerが分岐してOutputが2つ以上になったとき、1つ目のタスクでLOSS算出してbackword()、そして2つ目のタスクでLOSS算出してbackword()しようとするとxの算出結果がクリアされているのでエラーとなる。

対策は「まだ学習に用いるので計算結果をクリアしないでね」という目印としてloss.backword(retain_graph=True)とすること。

 

by ロードローラー

 

 

元Facebookエンジニアが語るイノベーション教材

お久しぶりです、ロードローラーです。

先日、元Facebookエンジニアのスピーチを聴く機会がありました。内容はイノベーションを起こす組織作りについてです。

冒頭に彼は「イノベーションに関して教材がたくさん出てますね、立派なハードカバーの本もあります。」と言いました。たしかにこの類の書籍は溢れるほど出版されています。

 

で、そこからズバッと一言「読まなくていいです」と切り捨てました。

・・・・ ( ゚д゚)エッ!

続いての主張はこうです

「どのように考え、どのように働くのかという習慣を社員に浸透させるというときに、まとめるのに数百ページもかかるようなノウハウを他人が実践できるわけがない。」

これは私、けっこう納得。

たしかに辞書的に使う専門書ならともかく、そうでない本が丸ごと役に立つことって少ないんですよね。例えば、以前にエディ・ジョーンズの本を読んで気付きを得たことがありますが、僕の行動を変えるに至った内容はたった数行のエディさんの言葉でした。(そのたった数行に出会うために僕は本を読んだわけですが、この考えをチームに浸透させるためにわざわざまた本を読ませる必要はありませんね。)

スピーチの内容に話を戻しますが「大切なのはシンプルな問い」と述べていました。例えばFacebookでは「What would you do if you weren’t afraid?」という「失敗を恐れないなら君はどう行動する?(⇒それがやるべきことだ)」というシンプルかつ強烈なメッセージを大切にしているそうです。

そしてFacebook社では、この短い問いをわざわざ本になんてせずに社内の壁に直接書いているそうです。そして見事に浸透。

日本企業には社憲が定められていることが多いですが、それはそれで大切にしつつ、何百ページの本を写真に読ませる前に、行動指針となるようなシンプルな問いをぶつけてみると良いかもしれません。

Deep Learning における Skip Connection の研究まとめ

背景と課題 ~Deepすぎると学習が進まない~


  • CNNでは層を深くすることが重要
  • 層を重ねることで高度で複雑な特徴を抽出できる
    • 2012年に画像認識の首位となったAlexNetは14層
    • 2014年に画像認識の首位となったVGGNetは19層
    • 同じく2014年に首位となったGoogleNetは22層
    • 2015年に画像認識の首位となったResNetは152層
  • このとき、層を深くすると思い通りに学習が進まない課題があった
    • 勾配消失
    • 勾配発散

引用:Deep Residual Learning MSRA @ ILSVRC & COCO 2015 competitions


ResNetのアイデア


元論文: [1512.03385] Deep Residual Learning for Image Recognition

  • 入力値と出力値の差分(残差)を学習する
    • Deepになると入力xと出力x*Wは極めて近い値
    • ならばxをそのまま残して差分を計算した方が効率的
  • 残差ブロックの提案
    • 畳み込み層+Skip Connection(恒等写像)を組み合わせた
    • Skip Connectionによって誤差逆伝搬をしやすい
    • 変換不要ならば畳み込み層のWeightを0にすればよい
    • 既にいい感じになっているxに余計なことをしなくてすむ
    • Skip Connectionなしでは非線形写像によってxが理想値から離れることがある
  • 残差ブロックのアーキテクチャ
    • Plainアーキテクチャ
      • 3×3のconv層が2つ
    • Bottleneckアーキテクチャ
      • 1×1のconv層でdimを小さくして、、、
      • 3×3のconv層にかけて、、、
      • 1×1のconv層で元々のdimに戻す


『DenseNet』CVPR2017 BEST PAPER


元論文: [1608.06993] Densely Connected Convolutional Networks

アイデア:層の間で情報伝達を最大化する

  • 上の図は1つのDenseBlockを表す
  • ℓ番目の層への入力は、0~ℓ-1番目の層の全出力となる

 

 

  • このようなDenseBlockを4つ含むネットワーク構造を提案
  • ダウンサンプリングなどのためにDenseBlock間にPooling層も挿入

ちょっと、やりすぎだろ・・・・

 


Skip Connectionとよく似たContracting Path構造(U-Net)


[q505.04597] U-Net: Convolutional Networks for Biomedical Image Segmentation

 

  • Image-ClassificationではなくImage-Segmentationのタスクで生まれた手法
    • Semantic Segmentationにおいて位置は保存したい重要情報
    • CNNではPoolingや畳み込みをするほど位置情報が曖昧になることが課題
    • 局所的特徴と全体的位置情報の両方を把握したい
  • 形がU字なのでU-Net
    • 左側がEncoder
    • 右側がDecoder
  • Up-Sampling後にEncoder部の同次元数の特徴を連結する
    • あまり畳み込みされていないEncoder部では位置情報が保たれているという仮定
    • concatenation with the correspondingly cropped feature map
    • 従来どおり特徴を抽出しつつ、位置情報を保存する

 

 


Skip Connectionの有効性を解明


[1712.09913] Visualizing the Loss Landscape of Neural Nets

LOSS関数を可視化することで近年のNeural Networkのアーキテクチャの有効性を検証した論文。Skip Connectionを利用した場合(右図)は、non-convexからconvexに近づく。

 


Skip Connectionを含む新しいネットワーク構造 ~Deep Layer Aggregation (CVPR2018)~


[1707.06484] Deep Layer Aggregation

疲れたのでまた今度・・・

 

 

統計におけるp値とt値 ~聞くは一時の恥、聞かぬは一生の恥~


■p値

回帰分析で求めた変数xの係数kに対し、『変数xは有効ではない』という帰無仮説を考えたとして、『偶然に係数がk以上になる確率』を表す

p値の解釈についてはコチラの表現がわかりやすい

 

カンタンに言うと「その仮説が正しいと仮定したら、今回みたいな結果が起きる確率はこんなにも低いんだ。偶然こんなに低い確率を引いたと考えるより、その仮説は正しくないと考える方が自然じゃない?」と主張するときの『こんなに低い確率』 https://atarimae.biz/archives/12011#p

 

仮説を否定するときの基準は『p値0.05以下』が広く用いられている

まわりくどいように感じるが、まとめると以下の流れ。
・変数xは有効ではないという仮説を立てる
・偶然では考えにくいような結果が出た
・きっと仮説は誤っていた、つまり変数xは有効だ!

 


■t値

・2つの集団に対して平均値に有意差がありかどうか判定する基準値

 

例えばトレーニング前の体力測定データの集合Xと、トレーニング後の体力測定データデータの集合Yを用意して、t値を算出することでトレーニングによる有意差があるかどうか検定ができる。

 

 

<数式の直感的な解釈>

分子:2つの集団間で平均値の差が大きいほどt値(有意差)が大きくなる

分母:それぞれ集団の分散が大きいほど、たまたま2集団間の平均値が離れただけの可能性があるのでt値(有意差)が小さくなる

分母:サンプルサイズ(mとn)が大きいほど、XとYの平均値が母集団を正確に表現できているのでt値が大きくなる

全員リーダーの組織論

大学選手権9連覇中の帝京大学の岩出監督の言葉

・過剰なトレーニングを強いるのは指導者の不安解消でしかない

・楽しくさせてやったら人間だれでも動く

 

BS1スペシャル
「“全員リーダー”の組織論~帝京大ラグビー9連覇~」
ラグビー大学選手権で前人未到の9連覇を果たした帝京。脱体育会系を掲げ選手一人一人に考える力を求めた岩出監督と選手15人のインタビューで負けない組織の核心に迫る。 

http://www4.nhk.or.jp/bs1sp/x/2018-01-28/11/15594/3115361/

 

コントロールするのではなく、自発的に動く環境を作る。やはりこれに尽きるようですね。

どシンプルながらも強力なPruningによるネットワーク高速化 ~Pruning Filters for Efficient ConvNets~

本日はPruningによるネットワーク高速化の論文を取り上げます。背景としてはディープニューラルネットワークではConv層の計算量やパラメータ数が膨大で、処理時間増大やメモリ圧迫が生じるのでなんとかしたいというところから来ていますね。

特に、ディープラーニングを組み込みで動かす場合はこのあたりの話はかなりシビアに効いてきます。


Pruning Filters for Efficient ConvNets (2017)(PDF
Hao Li, Asim Kadav, Igor Durdanovic, Hanan Samet, Hans Peter Graf

・Pruningによる高速化手法。
・Conv層をカーネルごと削減する手法を提案。


・L1ノルムが最小のカーネルを有効性が低いと仮定して削除する。
・既存のBLAS等のライブラリで実現可能。

 

・ResNetなど複雑な構造のネットワークでもConv層のPruningは可能
・関連するLayerもあわせて次元削減して次元数を揃える点に要注意
・Residualを出力するConv層を基準に削除次元を選定すると良いとのこと

 

・ランダムにカーネル選定するよりはL1を用いた方がわずかに良かった

 

・Layer別にPruning時の性能低下率と速度向上率を検証。
・性能低下を招きやすいLayerや、速度向上しやすいLayerがあることを示した。


所感

カーネル選定手法はまだまだ議論の余地はありそうですが、ポピュラーな構造のネットワークについて丁寧に検証されている論文でした。