京都大学 工学部 情報学科 2019倍率推移

京都大学(工学部情報学科)の倍率推移

  • 2018年  4.5倍*
  • 2017年  4.3倍*
  • 2016年  3.9倍*
  • 2015年  3.6倍*
  • 2014年  3.8倍
  • 2013年  3.7倍*
  • 2012年  3.4倍* ←AlexNet登場で深層学習ブームに火が付いた年
  • 2011年  3.0倍
  • 2010年  2.5倍

(*)は工学部で最高倍率

 

さぁ、次は気になる2019年度の倍率を予想してみます。




今年もおそらく横ばいになると予想されますが、AIブームが過ぎた後を見据えて、京都大学の一部では既に次なる一手を探そうとする動きもあるようです。

AIをやりたい若手が他へ流れる可能性もあり、AI以外の次世代を求める若手が新たにやってくる可能性もあり、倍率推移はほぼ横ばいというのが私の予想です。

さて今年はどうなるか、見物ですね。

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 ロードローラー

 

 

量子コンピューティング ~理論と仕組みとビジネスインパクト~

お久しぶりです、ロードローラーです。最近、縁あって量子コンピューティングについて聞く機会があったので、これを機に調査&まとめを作成しました。結論から言うと量子コンピューティングによる現在見えているインパクトは計算処理の飛躍的向上によって指数関数的に計算量が増大するような問題を解けるようになること。特に注目されているのは①組み合わせ最適化問題、②複雑なシミュレーションの実行です。


■量子コンピューティングとは

京都産業大学のコチラのサイトが非常にわかりやすいです。(https://www.kyoto-su.ac.jp/project/st/st14_03.html

従来コンピューターのビットは1か0のどちらかを表しますが、量子コンピューターで使われる「量子ビット」は同時に1と0の両方であり得るという性質を持ちます。表現できるパターン数が2のn乗(nはビット数)という点に変わりはありませんが、同時に1と0の両方であり得るという重ね合わせ表現によって、複数のパターンを同時に検証できるようになります。

例えば2ビットのとき、パターン数は(0,0), (0,1), (1,0), (1,1)の4つです(これは従来も量子も同じです)。ただしこれら4パターンを検証するときに従来のコンピュータだと4パターンを評価関数にかけるので計算が4回必要でしたが、量子コンピューティングでは4状態の重ね合わせに対して計算することが可能なので、いわば1回の計算で4パターンを評価できてしまいます。

正確には、複数状態を同時に計算できても、一度測定すればどれか1つの状態が確率的に選択されるので、欲しい答の状態だけを取り出す工夫(欲しい答が測定により選択される確率を高める)が必要です。


■計算量と指数関数

例えば配送員が50地点に荷物を届けるとき移動ルートのパターンは50!=30,414,093,201,713,378,043,612,608,166,064,768,844,377,641,568,960,512,000,000,000,000通りあります。

最も移動が効率的になるような移動ルートを算出したいとき、人間なら直感的にいくつか最適そうなルートにアタリをつけて検証することも可能でしょうが、厳密に最適化パターンを発見するには全選択肢について計算する必要があります(人工知能のフレーム問題とちょっと似ていますね)。

このような膨大な計算には従来コンピュータでは数年かかる、組み合わせの規模によっては数兆年かかるものまであり、解けない問題の1つとなっています。(そこで、実際には効率的に近似解を求めるアルゴリズムなどが提案されています。)


■ビジネスインパクト

よく話題になるのが次のものです

①組み合わせ最適問題を解決して効率向上

②複雑なシミュレーションが実行可能となり未知の問題を解決

③パスワードクラックなどデータセキュリティ

①については前述したとおり、組み合わせ最適問題について全選択肢を検証可能となり最適化社会がより促進されるであろうという説です。これについては私も賛同ですが、ビジネスインパクトは弱いと思います。Before-Afterで差分を考えると近似解が最適解になるだけの変化なので、量子コンピューティングの導入コストに見合うメリットなのか適切な見極めが必要です。

②については私は非常に楽しみです。分子科学の分野でより複雑なシミュレーションが可能となると新薬開発の新たな扉が開く予感がします。(調べてみましたが分子シミュレーションはスパコンでも電子43個くらい規模しかシミュレーションできないそうです)

③については盗み聞きしなくても量子コンピューティングで全通り試せばパスワードを突破できてしまうような世界が到来しえるので、パスワードがなくなって生体認証の普及がさらに加速するかもしれませんね。指紋も行ってみれば2次元画像なのでクラック可能だったりするんでしょうか?そのあたりは素人なのでわかりませんが、自分を証明するための技術に注目が集まると思います。


いかがだったでしょうか?過熱気味ともいわれる量子コンピューティングですが、正確な理解と真剣な検討は1度してみてもよいかもしれません。

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

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

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

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

 

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

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

続いての主張はこうです

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

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

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

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

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

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

Pythonでテキストを1行ずつ読み込む

なんかいっつもググってる気がするのでメモしておく

以上

ValueError: An operation has `None` for gradient. Please make sure that all of your ops have a gradient defined (i.e. are differentiable). Common ops without gradient: K.argmax, K.round, K.eval.

Q.「kerasで次のErrorがでるときの対処」

A.「原因はlossを計算するときに通過していないlayerが存在すること」

特に分岐型のネットワークを組んだときに発生しやすいです。Classificationタスクのニューラスネットワークを組んで、自己教示学習やAutoencoderで中間層を事前に学習するときに、classificationのlossを設定していないとClassification部分で「勾配が計算できません!」と怒られるわけです。

とはいっても、事前学習のときにはClassification部分を学習せさたくないのどうするか?

こんなときはloss-weightをゼロにしたり、常にゼロをreturnするダミーのloss関数を用意しておきましょう。

How to Display image as grayscale using matplotlib ??

UserWarning: Discrepancy between trainable weights and collected trainable weights, did you set `model.trainable` without calling `model.compile` after ? ‘Discrepancy between trainable weights and collected trainable’

 

UserWarning: Discrepancy between trainable weights and collected trainable weights, did you set model.trainable without calling model.compile after ? 'Discrepancy between trainable weights and collected trainable'

 

Solution: You should define layers before define models, and setting ‘trainable’ each time