rokkiの備忘録

地道こそ近道

今日学んだこと#0007

文字列の不一致

論文のタイトルのリストから,各論文の被引用数を一括取得するプログラムを書いた*1

arxivにタイトルをクエリとして投げて,タイトルが一致する論文があれば,その被引用数を取得する,という設計にした.

このとき,タイトルが一致するかどうかを以下の判定文にしていた.

#title:あらかじめ用意した論文名
#result:arxivからの返り値:arxiv.query(query=title)
if title == result[j]["title"]:

しかし上記のプログラムでは,完全一致していないといけない.少しでも異なると,同一の論文として処理してくれない.

これは困った. そこで,以下のように変更してあげた.まだ改善の余地はあるが,今回はこれでよしとする.

if title.replace(" ", "").lower() == result[j]["title"].replace("\n", "").replace(" ", "").lower():

*1:参考にしたサイトqiita.com

今日学んだこと#0006

論文アノテーション(30本)

1つのトピックに関する論文を30本*1読んだ.読んだ,といっても1から全部読むのではなく,タイトル,アブスト,図,実験で用いたデータ,評価指標に絞って流し読みした. アウトプットとして,task,method,architecture,data,metricsをまとめる.1本あたりにかけた時間はおよそ6分.手法の詳細や,細かい背景はほとんど追えないが,研究の流れをざっくりと把握することができる.

メタサーベイという言葉があるが,それよりもっと機械的でチープな行為であるため,これを論文アノテーションと名付けることにした.

「新しい分野を勉強するときは分厚い本から入る」

”人生を面白くする 本物の教養” 著 出口治明の一節で出逢った言葉.

分厚い本には詳しく高度なことがたくさん書かれていますから、最初は何が書いてあるのか分からず、読むのが大変です。(略)。それでも、たいていは部分的にしか理解できませんので、最初の一冊は「点の理解」にとどまります。二冊目を読むと、こんどは少しずつ点と点が結びついてこれまで理解したことが繋がり始めます。「線の理解」、すなわち線が浮かんでくるのです。分厚い本を5冊読んでから薄い本を読むと、それまでの点がすべて線になってつながり、(略)一挙に「面の理解」に広がります。

筆者はこれを新社会人の教訓になぞらえ,最初は地獄(の上司)を経験し,後に天国(仏の上司)を経験するほうが楽であり耐性もつくと述べた.

Amazon.co.jp: 人生を面白くする 本物の教養 (幻冬舎新書) eBook: 出口治明: Kindleストア

学生時代(今もそうだが),テスト,受験,部活,研究,就活といった,多くの地獄と天国を経験したため,この考えは非常に共感できる.であれば,これからの人生は率先して(後に天国を経験できると期待して)地獄を選択していくことが重要なのだろう.実践は困難を極めそうである.

*1:

今日学んだこと#0005

git tag

現在のブランチの最新のコミットにタグ名を追加

git tag -a tag_name -m "comment"

リモートにタグを反映

git push origin tag_name

git reset

最新のコミットを削除

git reset --hard HEAD^ 

commitだけ取り除こうとしたが,新規ファイルであり,hard optionにしていたため,ファイルが完全に削除されてしまい泣いた.

Harmonic Networkの完全理解

論文の精読や先行研究を参照したが,著者のyoutube*1が一番理解できた.一言で表現すると,PoolingによってCNNが移動等価性を実現できているように,各層がcircular harmonic filterの角度と強度を適切に学習することで,CNNで回転等価性を実現する.

Harmonic Networkを実行

python2系で設計されたコードをpython3系の環境で動けるようにした.そのために,以下のバグを取り除いた.

python versionによるエラー

  • urlib2 -> urlib.request
  • xrange -> range*2
  • iteritems -> items*3

その他バグ

  • values type not matched: (int, int, float) -> (int, int, int).
    #Before
    new_shape = tf.concat(axis=0, values=[Ysh[:3],[max_order+1,2],[Ysh[3]/(2*(max_order+1))]])
    #After
    new_shape = tf.concat(axis=0, values=[Ysh[:3],[max_order+1,2],[int(Ysh[3]/(2*(max_order+1)))]])
  • tf.nn.moments: ndarray -> list*4
    #Before
    batch_mean, batch_var = tf.nn.moments(X, np.arange(len(Xsh)-3), name=name+'moments')
    #After
    batch_mean, batch_var = tf.nn.moments(X, list(range(len(Xsh)-3)), name=name+'moments')
  • format error*5
    #Before
    sys.stdout.write('{:d}/{:d}\r'.format(i, data['train_x'].shape[0]/args.batch_size))
    #After
    sys.stdout.write('{}/{}\r'.format(i, data['train_x'].shape[0]/args.batch_size))

荒ぶるtensorflowを制限する*6

適当に設定してしまうと,GPUを無尽蔵に使ってしまうため,以下のように,GPUを指定する.

    config.gpu_options.allow_growth = False
    config.gpu_options.visible_device_list = "0"

今日学んだこと#0004

  • 再起動*1ubuntuでdocker-gpu起動に手間取ったが,解決した*2.やはり再起動が万能.余裕があれば,手順を備忘録として残したい.

*1:学んだことというより,やったことをただ書き連ねているだけな気がしてきた...

*2:qiita.com

今日学んだこと#0003

  • 嫌悪感は批判か暴言か:「Dead by daylight」を初めてプレイした.が,グロテスクな表現に強い生理的嫌悪感を感じてしまい,10分もプレイできなかった.これは一体どう楽しめばいいのだろう.とはいえ,チュートリアルをプレイしただけで作品全体を語るのはよろしくないため,これ以上の言及はしない.しかし,チュートリアルを終えて,続きをプレイしたくないゲームは生まれて初めてだった.この衝撃を二度と忘れることはないだろうし,プレイすることも二度とないだろう.翻って,この感情の対象が人やその他創作物であっても,この感情を表明すべきではないのだろう.批判と暴言を分別すべき*1という文言をよく耳にする.嫌悪感が暴言を生み出さないようにするには,「なぜ嫌悪感を感じたのか」を客観的に言語化することが大事ではないだろうか.というわけで,この嫌悪感の言語化は未来の自分に任せることにした.

*1:こちらのブログでは扱うテーマは違えど,批判と暴言に関して触れている.note.com

今日学んだこと#0002


  • やってみなはれ:NewsPicksのWeeklyOchiaiでの締めの一言*1サントリーHD新浪剛史 さんが「大企業・新リーダー論」というタイトルで,サマリーとして,「やってみなはれ」を掲げた.事業において,なんでもやっていいよという方針ではなく,やりきれよ!というメッセージを込めているそう.この考えを自分ごととして捉え実行したい.

  • metric learnignの歴史:CVPR読み会(後編)での学びその1.metric learningの最先端の研究が紹介されていた.実は自分も斜め読みしていた論文*2であったため,非常に興味を持って聴講できた発表である.metric learningの歴史だけでなく,プレゼンの方法*3も参考になった.

  • meta learnignの活用例:CVPR読み会(後編)での学びその2.昨年読んだMAMLを活用した研究が紹介されており,meta learnignの勉強になった.

  • マイク大事:CVPR読み会(後編)を視聴して感じたこと.オンラインでの発表では,やはりマイクの音質が重要である.ホワイトノイズが終始聞こえる発表者のプレゼンでは集中力が低下した.技育祭で落合陽一氏が言及していたように,給付金で買うべきはやはり良いマイクとカメラである.

今日学んだこと#0001

  • 振り返りOverwatchをフレンドとプレイし,振り返りを行った*1Overwatch歴はかれこれ6年目になるが,「振り返り」を行う機会はなかなか取れない.この「振り返り」によって,第三者の目線で自身のプレイを見つめ直すことができた.ところで,こうした「振り返り」は,ゲームだけに限らず仕事においても重要な役割を担う.仕事や研究生活での失敗や成功を「振り返る」ことで後の人生に役立つ,と考えているからだ.現に私は今,この記事を書くことで,今日の「振り返り」を行っている.一度立ち止まって,後ろを「振り返る」.これだけで,毎日の生活にプラスの変化を創り出すことができるのかもしれない.

  • 発表の聞き手を想定せよ:研究室内で,論文の紹介*2を行った.スライド作成は時間をかけたが,発表練習をほとんど行わなかったため,ぼろぼろな発表となってしまい,反省である.具体的な反省点として,門外漢に対する説明が不足していた点が挙げられる.

  • 用意周到:上記の論文紹介において,良かった点を上げるとするならば,発表資料を作る前段階,サーベイが十分できていた点である.これにより,質疑応答は順当にこなすことができたと実感している.

*1:振り返りを行ったキッカケfpsnoobs.hateblo.jp

*2:Self-Supervised Learning of Pretext-Invariant Representations from CVPR 2020