2019年の振り返り
こんにちは。@shunk031です。クリスマスにニューラルネットワーク"力"をお願いしましたが、何も貰えませんでした。サンタさんはHinton先生ではないみたいです。毎年同じお願いをしている気がします。
驚くべきことに2019年も今日で終わりみたいです。 この1年何をやってきたか振り返りも兼ねて、思い出せるイベントについてその時のツイートと共に残しておこうと思います。
自己紹介
法政大学理工学研究科応用情報工学専攻2年です。深層学習を主とした自然言語処理を研究しています。Gunosyで研究にフォーカスしたリサーチインターンをやっています。
1月
1月は主に1月中に締め切りがある国内学会用の論文2本と、2月頭に締め切りがある国際学会用の論文1本を書くハードスケジュールをこなしていました。これらは自然言語処理と医用画像処理、そして計算機広告というそれぞれ異分野の論文を並行で執筆していました。その途中に逆求人イベントや機械学習のコンペに参加していたりと、2019年始まった最初の月が今年で一番大変だった月だったと記憶しています。
情報処理学会 論文締め切り
1月11日締切の情報処理学会全国大会用の論文を書いていました。こちらは以前書いたSkin lesion classification with ensemble of squeeze-and-excitation networks and semi-supervised learningという論文の追加実験を行った結果をメインに執筆を行なっていました。
言語処理学会 論文締め切り
1月16日締切の言語処理学会全国大会用の論文を書いていました。こちらはGunosyでのリサーチインターンの成果をメインに執筆を行なっていました。
アカリクITイベント in 東京
2020年卒だったので、一応就活を意識していました。まずは自分の現在持っている技術や経験がどれくらい企業の方に評価していただけるのかを知るために、以下の逆求人イベントに参加しました。
参加されている方々は素晴らしい実績を持っている方々ばかりだったようで、Twitter等でもよくお見かけする方々とも交流できたのでとても良い経験になりました。
逆求人のフィードバックコメントを受け取りました!面談していただいた各企業さま、ありがとうございました。あまりにポジティブなフィードバックばかりでオタクの涙を流しております😭 #acaricit
— しゅんけー (@shunk031) 2019年2月1日
この逆求人イベントで声を掛けていただいた企業様を中心に就活を進めたので、とても有意義だったと考えています。
DeNAデータ解析コンペイベント
もともと交流があり、Kaggler軍団を有するDeNAさんが機械学習コンペをやるということで、怖いもの知らずでしたが参加してきました。
イベント開催中のPublic LBがあまり芳しくなく、ぜんぜんスコア上がらないと落ち込んでいたのですが、なぜかPrivate LBで1位でした。優勝者として名前が呼ばれたことにとても驚いたことを覚えています。
DeNAデータ解析コンペイベント優勝しました🎉🎉 Public LB全然良くなかったので名前呼ばれたときに驚きました😅 pic.twitter.com/J0ceeabmhb
— しゅんけー (@shunk031) 2019年1月27日
2月
2月はKDDの締め切りがあったあと少しゆっくりしていました。その間にChainerハンズオンのチューターに参加したり、機械学習のコンペを後輩たちと一緒にチームを組んでやっていたりしました。
KDD 論文締め切り
2月3日締切のKDD2019用の論文を書いていました。初めてのロングペーパーで、初めてのACMフォーマットで9ページ書ききるのがとても辛かったです。データマイニングのトップカンファレンスで採択率も低いこともあり、このときはKDDに採択されると思っておらず、リジェクトされたらCIKM2019に再度提出してみようという戦略でした。
Chainer Beginner's Hands-on Course チューター参加
突然ですが私はChainerが大好きです。研究でも使っていましたし、再現実装等もそれなりに多く公開してきました。しかしこれまでChainer本体に何もコントリビュートできていませんでした。 ちょうどChainerのハンズオンが開催されるタイミングがあり、そこでチューターとして参加させていただきました。
コードでコントリビュートしろと言われればそれまでですが、実際使っている方や使っている中で困っている方を助けることが出来たと考えており、コミュニティに対してコントリビュートできたのかな、と当時思っていました*1。
Chainerハンズオンお疲れ様でした!
— しゅんけー (@shunk031) 2019年2月16日
微力ながらお手伝いさせて頂きました😭
オレオなドロイド君とChainer Tシャツ貰えてゴキゲンのオタク君です! (at @GoogleJapan in 港区, 東京都) pic.twitter.com/CWuJBd3mW2
FDC締め切り
忙しかった1月の中旬頃から、こちらも機械学習コンペであるFintech Data Championship (FDC) に参加していました。こちらは株価を予測するコンペであり初手で闇コンペみを感じていましたが、コンペ運営も少しガバめであったこともあり闇x闇という素晴らしいコンペでした。
AIを専攻していないので分かりませんが、何かのバグを踏んでしまい3000億稼ぐエーアイを爆誕させて大喜びしていたのを覚えています。
ということで弊研の優秀同期と後輩たちで組んでモデリングした結果、3900億の利益を出し無事優勝です(?) #fintechdc pic.twitter.com/nXyOhCFGjZ
— しゅんけー (@shunk031) 2019年2月22日
3月
3月、それとなく就活ムーブをしてみたり、学会をはしごして発表したりしていました。移動距離が結構長くて移動している感を感じました。
就活
何の苦しみもなく就活をしていた気がします。応募するときも人事の方がいい感じにやってくれていたり、面接に行くとだいたいお知り合いだったのも気持ちが楽でした。ESは特に書いた記憶がなく、それっぽいCVを送るだけで良かったです。よく聞く就活辛い話は特になく、運の良い学生だったかなと今は思います。
言語処理学会2019 in 名古屋
名古屋大学で開催された言語処理学会2019全国大会にて、以下の発表を行いました。
- 北田俊輔, 彌冨仁, 関喜史, "広告クリエイティブ自動生成にむけたマルチタスク学習と Conditional Attention による CVR 予測", 言語処理学会第 25 回年次大会, 2019.
言語処理学会での発表の様子は以下のブログに譲ります。
情報処理学会2019 in 福岡
福岡大学で開催された情報処理学会2019全国大会にて、以下の発表を行いました。
- 北田俊輔, 彌冨仁, "頑健な皮膚腫瘍診断支援のための body hair augmentation", 情報処理学第 81 回会全国大会, 2019.
言語処理学会での発表を終えて次の日には福岡に移動しました。新幹線の中で某社の採用課題をやって提出しました。その時はモデルのチューニングを考えたくなかったのでoptuna*2でハイパラ探索をさせていたのを記憶しています。
ありがたいことに学生奨励賞をいただくこともできました。
情報処理学会の「画像編集/GAN」セッションにて発表した「頑健な皮膚腫瘍診断支援のためのbody hair augmentation」で学生奨励賞を頂きました🎉お聞き頂きありがとうございました! #IPSJ #IPSJ2019 pic.twitter.com/w9Wnfz0Cyv
— しゅんけー (@shunk031) 2019年3月15日
大学のホームページに乗ると、実家の家族も驚いてくれるので*3ありがたいです。
Gunosy DM 発表
私のインターン先であるGunosyでは毎週論文読み会を開催しています。私自身も発表に参加させていただいています。ちょうどWSDM2019の論文を読む週だったので、以下の論文をチョイスして紹介しました。
卒業式
お世話になった先輩方や、お世話をした後輩たちが卒業していきました。みなさん社会で活躍しているので弊研出身者凄いなという気持ちです。
FDC 結果発表
株価予測は運。
4月
3月に引き続き就活っぽいことをしつつ、推し事をやるために全国を飛び回っていました。 採用インターンでDe社さんにお世話になっており、とても楽しくインターンさせていただきました。
小倉唯ライブ
推し事をやりました。
全通しました。大阪、滋賀、愛知、新潟、仙台、幕張2daysを1ヶ月でやりました。
KDD論文採択
4月28日にKDDの論文採択通知が来ました。ちょうどゴールデンウィークで実家に帰省していたのと、あまり期待していなかったため適当な生活をしていたのですが、共著者の関さんから連絡が来てメールを確認したら採択されてました。今でもあの嬉しさは忘れられないです。何も理解がない実家で一人ありえん喜んでいたので、とうとう息子は壊れてしまったのかと心配されました。
Very happy to announce that our paper "Conversion Prediction Using Multi-task Conditional Attention Networks to Support the Creation of Effective Ad Creatives" has been accepted at #KDD2019 !! Super thanks with my co-author @YoshifumiSeki
— しゅんけー (@shunk031) 2019年4月29日
論文採択までのいろいろは以下のブログでまとめています。
5月
5月はKDDに採択された論文のカメラレディを用意したり、プロモーションビデオを用意したりしていました。これが微妙に大変で忙しかったです。
KDD camera ready 締め切り
こちらがcamera ready版の論文です。いい感じに仕上がりました。
https://dl.acm.org/doi/10.1145/3292500.3330789dl.acm.org
研究室運動会
弊研恒例の研究室運動会でした。このときは3年間参加してきた運動会もラストか〜と個人的にエモい感じになっていました。
6月
6月は比較的のんびりしていた気がします。ぽつぽつと就活案件も入っていたようです。
Cpaw LTで登壇
所属サークルであるCpawでLTをしました。
私はPyTorchのC++フロントエンドであるlibtorchとgolangのwebアプリフレームワークであるginを組み合わせた高速な深層学習APIサーバの構築について話しました*4。
日付変わって今日の #CpawLT の資料作りを開始した(遅い)(レポジトリはまだ公開できる状態にない😭) pic.twitter.com/Ns24EBSf3E
— しゅんけー (@shunk031) 2019年6月7日
実装は以下に公開しています。
ICML/KDD 2019 Pre-conference sessionで登壇
KDDの採択を受けて、同時期にICMLに採択されたLAPRASさんからお声がけいただき、以下の勉強会で発表してきました。
LAPRAS @lapras_inc さんでICML/KDD採択者によるプレ発表会をやってきました!僕からもKDDで発表する内容を軽く説明させていただき、ポスターセッションでも議論させていただきました!素晴らしい会にお声がけくださったLAPRASの方々には感謝です。聞いてくださった皆様もありがとうございました😊 pic.twitter.com/UjXuW5mYjR
— しゅんけー (@shunk031) 2019年6月3日
クローズドな勉強会で登壇
Gunosy社内で複数社合同のクローズドな勉強会が開催されたときにKDDに採択された内容を発表させていただきました。ちょうどこのときガウス過程と機械学習 の著者の大羽先生の講演も聞くことができ、とても刺激を受けました。
エムスリーインターン
ある勉強会でエムスリーの西場さんのお話を聞く機会があり、かねてより気になっていたのでインターンに応募させていただきました。エムスリー社内で私のことを知ってくださっている方も多く、次に連絡をもらったときにはもうインターンとして採用決定している旨を聞き、スピード感に驚きました。
電話一本で時給2000円の某インターンに行くことになったんですが、圧倒的な決定速度でビビる(一瞬お世話になりますmm)
— しゅんけー (@shunk031) 2019年5月29日
エムスリーでは主に医療論文のレコメンドサービスをイチから立ち上げる経験をしました。アルゴリズム部分は私自身が選定し、実装しました。インターンが終わった後も私が実装したものをベースに改善されていっているようです*5。
ちなみに西場さんの エムスリーにおけるAI・機械学習チームの立ち上げと機械学習プロダクト開発
がとても良かったです。医療論文のレコメンドサービス Pauli
についても言及されています。
同時期にご一緒させていただいていたインターン生がありえないぐらい強かったです。
エムスリーインターン、左にICCV通した方、僕はKDD、右にNeurIPS通した方と謎布陣でワイワイコード書いてたの貴重な体験だったのでは
— しゅんけー (@shunk031) 2019年10月12日
7月
8月頭のKDDへの発表に向けて準備していたり、8月終わりのYANSにむけたネタ集めをしていた時期でした。
Gunosy DM 発表
ちょうどWWW2019の論文を読む週だったので、以下の論文をチョイスして紹介しました。
フロリダ大学からの来客
指導教員の友人がフロリダ大学からいらっしゃいました。以下は彼が当時研究していたものです。-VAEにおける はチューニングするのが難しいですが、以下ではそうした問題を克服するための手法を提案しています。
リサーチインターンに対するインタビュー
Gunosyでのリサーチインターンの成果について、メンターである関さんとインタビューを受けました。いつも面倒を見てくださっている関さんからとても嬉しい言葉をいただけたので、ここに引用しておきます。
頭で考えてから実装までのスピードがとても速いです。これはとても重要な能力だと思います。我々が取り組んでいるような機械学習の応用に関する研究ではどれだけ頭で考えていても、実装の結果を見ないと分からないことが多いです。北田君は考察しながら手を動かし、限られた時間で目覚ましい成果を出しているので、素晴らしいと感じています。 あとは、コミュニケーションを容易に取れる所も助かっています。僕が言った内容を理解し、それ以上の情報を返してくれる優秀さに驚いています。研究チームに北田君を誘ったのも、僕がメディアの研究や推薦システムの部分を行い、広告の研究を北田君に一任したいと考えていたからです。実際、広告技術部にいた彼だからこそ得意な分野を活かして良い研究に仕上げられたと感じています。
研究職インターンが活躍する環境とは~論文がトップカンファレンスに採択されるまでの軌跡 - Gunosiru(グノシル) | はたらくを知り、 Gunosyを知る。
特別賞受賞
リサーチインターンの成果が評価され、Gunosyでの締め会でCEO特別賞をいただくことができました。社員以外での受賞はこれが初めてのようです。たくさんの社員さんに協力して論文を書かせていただいたので、受賞できて嬉しかったです。
CEO特別賞(多大な業績に貢献した社員のみに贈られる賞) こちらの賞は従来の賞とは別に、多大な業績に貢献した社員が居る場合のみ贈られます。今回は、データマイニングに関する国際会議「KDD2019」に論文が採択された関さんと北田さんの2名が受賞しました。
飛躍に向けた全力助走~『Gunosy 第7期 下半期締会』の様子をレポート - Gunosiru(グノシル) | はたらくを知り、 Gunosyを知る。
8月
8月はKDDでアラスカ、お盆の帰省で長野、YANSで北海道と移動し、比較的涼しいところで過ごした夏でした。1年の中でも特に充実した1ヶ月でした。
KDD2019 in アラスカ
アラスカで開催されたKDD2019にて、以下の発表を行いました。
- Shunsuke Kitada, Hitoshi Iyatomi, Yoshifumi Seki. "Conversion Prediction Using Multi-task Conditional Attention Networks to Support the Creation of Effective Ad Creatives." Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, 2019.
初めての本会議で初めてのトップカンファレンスということもあり、学会の規模の大きさに驚きました。ポスター発表では名だたるテック企業の方々がポスター発表を聞きに来てくださり、とても刺激的なディスカッションをすることができました。
ポスターデプロイした!よろしくお願いします🙇 (@ Dena'ina Civic & Convention Center - @denainacenter in Anchorage, AK) https://t.co/kxmbyopdDV pic.twitter.com/YKF8dtly1j
— しゅんけー (@shunk031) 2019年8月7日
Gunosy DM 発表
SIGIR2019の論文を読む週だったので、以下の論文をチョイスして紹介しました。
オープンキャンパス
夏といえばオープンキャンパスです。今年は弊研究室が公開されました。私たちが普段研究している内容についての展示や説明を行いました。
YANS2019
北海道札幌市で開催されたYANS2019にて、以下の発表を行いました。今回は初めて弊研から複数人参加であり、共著としての発表も増えました。
- 北田俊輔,彌冨仁, "解釈性向上のための注意機構と損失勾配に対する関連損失の導入",NLP 若手の会 (YANS) 第 14 回シンポジウム, 2019.
- 長澤駿太,北田俊輔,彌冨仁, "日本語の文字体系を考慮した文書分類モデルの提案",NLP 若手の会 (YANS) 第 14 回シンポジウム, 2019.
- Daif Mahmoud, Shunsuke Kitada, Hitoshi Iyatomi, "Image Based Character Embeddings for Arabic Document Classification",NLP 若手の会 (YANS) 第 14 回シンポジウム, 2019.
以下はKDD2019でもらったTシャツを来てYANSで発表した様子です。
KDDのTシャツ着てるオタクと握手✌️ pic.twitter.com/0fZ9GtNWHT
— しゅんけー (@shunk031) 2019年8月27日
ありがたいことに奨励賞をいただくことができました。投票していただいたみなさんのおかげで受賞できたので、これを励みにまた頑張ろうという気持ちが強かったです。
奨励賞を頂くことができました🎉
— しゅんけー (@shunk031) 2019年8月28日
ありがとうございます! #yans2019 pic.twitter.com/TZtixhoJVO
繰り返しになりますが、大学のホームページに乗ると、実家の家族も驚いてくれるので*6ありがたいです。
9月
8月は出ずっぱりで発表しまくり月間でしたが、9月も引き続き発表する機会に恵まれました。研究室合宿でゆっくりしたかったですが、ありえん遊んでしまいました。
研究室合宿
毎年恒例弊研の合宿です。B4の子たちの中間発表に向けた発表練習が中心で、その後はいい感じに遊びました。
法政大学 科学技術フォーラム
弊学の理系学部の研究・技術の内容・成果を展示などで披露するフォーラムに弊研が選ばれました。弊研究室が行っている研究をポスターにまとめ、来場者の方に説明を行ったり、デモを披露したりしました。
本日は弊学の科学技術フォーラムにて彌冨研究室における、深層学習を中心とした研究取り組みについて発表させていただきます!植物病害自動診断システムのデモや、データマイニングの最難関国際会議に採択された研究の解説をします。ぜひお越しください https://t.co/dlD8qaFV6N
— しゅんけー (@shunk031) 2019年9月14日
弊研でやってる研究を詰め込んだ渾身のポスターをデプロイした! pic.twitter.com/D0xMYEYZhf
— しゅんけー (@shunk031) 2019年9月15日
PyConJP 2019
PyConJPは私がB3の頃から参加しています。当時はM2の先輩と一緒に参加し、とても楽しかった記憶があります。今年は私がM2で、B3, B4, M1の後輩たちと発表を聞きました。機械学習を中心とした発表が多く、Pythonのカンファレンスではなく機械学習のカンファレンスでは?という感想を抱きました。機械学習のカンファレンスでも私は聞いていて楽しいのでよいですが。
テキストアナリティクスシンポジウム 依頼講演
KDDの採択を受けて、テキストアナリティクスシンポジウムでリサーチインターンはどういうものなのか講演していただきたいというとてもありがたい依頼を受けまして、発表させていただきました。海外では一般的になりつつあるリサーチインターンですが、国内ではまだまだ発展途上であり、私がリサーチインターンをやっていく中でどのように論文採択までに至ったかについて発表しました。パネルディスカッションタイムでは、CyberAgentの方々や共著者でメンターの関さんと白熱したディスカッションができました。
10月
10月はそれなりにゆっくりしていた1ヶ月だった気がします。あまり記憶がないです。
Gunosy DM 発表
KDD2019の論文を読む週だったので、以下の論文をチョイスして紹介しました。この発表は私たちがKDDでポスター発表していたちょうど目の前で同じくポスター発表していたもので、論文の内容もそうですが、とても親近感が湧きました。
京都旅行
なぜか京都に行きたくなったので行ってきました。適当に京都に行くの普通に最高ですね。
オタク w/ 金閣 pic.twitter.com/YcYz48GdRm
— しゅんけー (@shunk031) 2019年10月21日
11月
11月は論文執筆がメインの1ヶ月でした。
論文執筆
12月初旬に締め切りのある学会に向けて論文を書いていました。今回の今までキツキツだった執筆スケジュールと異なり、それなりに余裕のあるスケジュールで執筆をすすめることができました。
12月
12月は引き続き論文執筆をしていました。後半は温泉に行ったりアドベントカレンダーを書いたりしました。
論文締め切り
それなりに余裕があるなと思いながら執筆していましたが、直前はやっぱり色々ドタバタしますよね。なんとかサブミット出来ました。
Gunosy DM 発表
RecSys2019の論文を読む週だったので、以下の論文をチョイスして紹介しました。
草津旅行
後輩がcall for 草津温泉をやっていたので乗りました。
狂うほど蟹食べてる pic.twitter.com/C0TLUo97pL
— しゅんけー (@shunk031) 2019年12月16日
強そう (@ 草津熱帯圏 - @nettaiken932 in 草津町, 群馬県 w/ @hitoshu_iyatomy) https://t.co/DzSD4MCqru pic.twitter.com/O5Ofu5vdRW
— しゅんけー (@shunk031) 2019年12月17日
アドベントカレンダー執筆
実は密かに研究室アドベントカレンダーをやりたいと夢見ていました。
たしかにw あの頃言ってたけどこういうアウトプットできる人材が少なかっだからなぁ(辛辣) 今は良い後輩がいっぱいあって良い雰囲気だねー
— Chihiro@休養中 (@encry1024) 2019年11月29日
今年はアウトプットできる人材も増えてきたので、みんなを巻き込んでアドベントカレンダーをやりました。弊学の学部1年生から4年生、修士1,2年やOBOGを巻き込みました。隣の研究室の子も巻き込んだりして壮絶な感じになりましたが、無事完走したので良かったです。嬉しかったです。夢を叶えました。
ちなみに私が書いた記事は以下の4つです。なんだかんだアウトプットするのって大変なので強制的にアウトプットできるこの機会はありがたいです。
番外編
番外編として美味しいご飯や飲んだタピオカミルクティー、綺麗な景色のツイートを貼ります。
美味しいごはん
KDD執筆に向けてメンターさんが連れて行ってくださった馬刺しや寿司です。美味すぎて馬になりました。
いつものお世話になっているメンターさん&P社のお兄さんたちと謎の場所で馬肉を摂取させていただきました🐎人生のSoTAを更新しました🐴🐴🐴 pic.twitter.com/EFgPDddTJk
— しゅんけー (@shunk031) 2019年1月24日
世の中にはバイト中に論文書いてトップカンファに投稿すると高級寿司を無限に食わせてくれるメンターさんがいます。ご存知ですか? pic.twitter.com/Bmonv1d8Xt
— しゅんけー (@shunk031) 2019年2月20日
タピオカミルクティー
タピオカミルクティーにどハマリした一年でした。飲んだタピオカミルクティーを順不同で適当に貼ります。
1Lのタピオカミルクティー、State of the Artみを感じる。デカい pic.twitter.com/VsCDGP8e8R
— しゅんけー (@shunk031) 2019年10月5日
後輩たち10人でタピった🤗 (@ 吉龍糖 in 渋谷区, 東京都 w/ @tetsu316naga) https://t.co/MU27Jh3l8t pic.twitter.com/fBHKbT7xx4
— しゅんけー (@shunk031) 2019年12月19日
ホットにした一芳の黒糖タピオカラテ、世界一美味いのでオススメです😭😭😭 (@ 一芳 台湾水果茶 in 武蔵野市, 東京都) https://t.co/Kj19uFkXlf pic.twitter.com/a0LdN4BYTg
— しゅんけー (@shunk031) 2019年12月14日
くら寿司タピオカミルクティー (@ くら寿司 - @mutenkurasushi in 小金井市, 東京都) https://t.co/EGCy3R1odX pic.twitter.com/DE1AV0vbNy
— しゅんけー (@shunk031) 2019年11月4日
一芳フルーツティー美味しい😌 (@ 一芳 台湾水果茶 - @yifangteajp in 渋谷区, 東京都) https://t.co/hJNfLgR5qP pic.twitter.com/zH6v4bVOi4
— しゅんけー (@shunk031) 2019年10月25日
夜飯 / All the teams above me are overfitting with bubble tea. (@ 一芳 台湾水果茶 in 武蔵野市, 東京都) https://t.co/Yh58FAQ1b2 pic.twitter.com/3F48YMwLZf
— しゅんけー (@shunk031) 2019年10月15日
「まだタピオカミルクティーとか言ってるの?」と言われたので、ホットのタピオカミルクティーの良さにおける幸せの最大化問題について議論しています pic.twitter.com/r5ejWn0jVD
— しゅんけー (@shunk031) 2019年12月28日
期間限定の鉄観音ミルクスムージー、ミルクフォーム+タピオカx2、ウンメェ〜(完飲)(昼ごはんはこれだけ) (@ Gong cha 貢茶 - @gongcha_japan in 武蔵野市, 東京都) https://t.co/3WaleRNl8z pic.twitter.com/DCiiKJ4vXk
— しゅんけー (@shunk031) 2019年7月29日
美人と飲むゴンチャは体に良い pic.twitter.com/lcYtrpHons
— しゅんけー (@shunk031) 2019年12月8日
カンパ〜〜〜イ🍻 (@ Gong cha 貢茶 - @gongcha_japan in 新宿区, 東京都) https://t.co/YfJWoSOcsu pic.twitter.com/GViEVsbzeB
— しゅんけー (@shunk031) 2019年9月28日
綺麗な景色
綺麗な景色は綺麗でした。初めて六本木ヒルズの頂上に行きました。
ガーデンプレイスから見える六本木ヒルズと東京タワーです(綺麗) pic.twitter.com/wtPUJjhWsy
— しゅんけー (@shunk031) 2019年12月21日
綺麗すぎるな???? (@ スカイデッキ - @tokyo_cityview in 港区, 東京都) https://t.co/3GKrrcpYK6 pic.twitter.com/t1QNAEi8Cl
— しゅんけー (@shunk031) 2019年12月25日
まとめ
トップカンファレンスに論文が採択されたことにより、半ば人生が変わってしまいました。楽しさが単調増加していた1年でした。素晴らしい人たちとコラボして研究をしたりインターンをしたりできたので、より幸せだったと思います。
ありがたいことに来年も色んな方々とコラボできる話が進んでおり、とても楽しみです。「こいつと組んでみたい」と思ってもらえるように研鑽を積んでいきます。そのほかコラボしていただける方や企業さま、@shunk031にご連絡いただければと思います。では良いお年を。
*1:Preferred Networks、深層学習の研究開発基盤をPyTorchに移行 | 株式会社Preferred Networks https://preferred.jp/ja/news/pr20191205/
*2:optuna/optuna: A hyperparameter optimization framework https://github.com/optuna/optuna
*3:実家に帰るとエーアイとかいうわけわからん研究してないで早く就職してくれとよく言われます。
*4:こちら資料は公開していません。もしもご興味がありましたらご連絡いただければ…
*5:Content-Based Citation Recommendation - ACL Anthology https://www.aclweb.org/anthology/N18-1022/
*6:勉学にあまり理解のない家族の人たちにも、流石に複数回受賞していると遊んでいるんじゃなくてちゃんと研究してる感が伝わるようです。
Allentuneを用いたAllenNLPモデルのハイパーパラメータのチューニング
こんにちは@shunk031です。
この記事は彌冨研 Advent Calendar 2019 20日目の記事です。
前回の記事は「期待検証性能(expected validation performance)」をもとにしたパラメータ探索の検証についてでした。
今回の記事はallentuneを用いたAllenNLPモデルのハイパーパラメータチューニングについて紹介します。このallentuneには 期待検証性能
によるハイパーパラメータ探索の検証が行える手法が実装されています。
AllenNLPはPyTorchで構築されたリサーチにフォーカスしたオープンソースのNLPライブラリです。
アルゴリズム
ハイパーパラメータのサンプリング手法
ハイパーパラメータ探索のアルゴリズムとして、random search
と grid search
が実装されています。これらは Rayが提供しているものを使用しています。
期待検証性能によるパラメータ探索の検証
allentuneのアルゴリズムは以下の論文が元になっています。
使い方
基本的にはallentuneのREADMEを参考に手順を踏むと実行可能ですが、依存しているパッケージのバージョンまわりで少しハマりポイントがあります。
インストール
レポジトリからクローンしてきてpipでインストールします。
$ git clone https://github.com/allenai/allentune.git $ cd allentune $ pip install --editable .
2019年12月現在の情報
このとき、普通にインストールすると依存でTensorflowの最新版(2019年12月現在v2.0.0が入ります)がインストールされますが、Rayが2系に対応していないため、Tensorflow 1.xxx系 を使ってください。
モデルの設定
学習を行うモデルの設定を記述します。例として classifier.jsonnet
として定義しています (公式の設定例)。
ハイパーパラメータとなる値は環境変数を通じて設定されるので std.extVar
等のjsonnetのメソッドを通じて流れるように設定ファイルを記述する必要があります。
通常のAllenNLPでのjsonnetでは相対パスが読み込めますが、allentuneの場合はjsonnetに相対パスを書いている場合は相対パスが解決できずエラーで読み込めなくなります。絶対パスを書く必要がありそうです。
探索範囲の指定
search_space.json
(公式の設定例) を作成して、探索範囲を指定します。allentuneでは以下のサンプリング手法がサポートしています:
choice
- 指定した要素群から選択する手法
integer
- 指定した範囲内で整数をランダムにサンプルする手法
uniform
- 指定した範囲内で一様分布に従った浮動小数点数をサンプルする手法
loguniform
- 指定した範囲内で対数一様分布に従った浮動小数点数をサンプルする手法
ハイパーパラメータとして与えたい変数と、そのハイパーパラメータのサンプリング手法、そしてその範囲を与える形です。
実行方法
パラメータの探索範囲をと探索方法を指定する search_space.json
とモデルの設定ファイル classifier.jsonnet
が用意できたら、以下のように allentune
コマンドを用いてハイパーパラメータ探索を開始できます。
$ allentune search \ --experiment-name classifier_search \ --num-cpus 56 \ --num-gpus 4 \ --cpus-per-trial 1 \ --gpus-per-trial 1 \ --search-space examples/search_space.json \ --num-samples 30 \ --base-config examples/classifier.jsonnet
--num-gpus
に50を渡すと50GPUに対してハイパーパラメータ探索が実行されます。あとは実行して最強のハイパーパラメータを探してもらうだけです。論文でも読んで待ちましょう。
探索結果の確認
ハイパーパラメータの探索結果を確認する場合、以下のコマンドを実行することで performance-metric
に指定したメトリックに対してベストなハイパーパラメータを確認することが可能です。
$ allentune report \ --log-dir logs/classifier_search/ \ --performance-metric best_validation_accuracy \ --model cnn
期待検証性能の可視化
ハイパーパラメータの探索施行数と期待検証性能の関係図をプロットすることが可能です。 期待検証性能がサチってきていることがわかれば、それ以上探索しなくてもよくなります。
$ allentune plot \ --data-name IMDB \ --subplot 1 1 \ --figsize 10 10 \ --result-file logs/classifier_search/results.jsonl \ --output-file classifier_performance.pdf \ --performance-metric-field best_validation_accuracy \ --performance-metric accuracy
所感
allentuneを用いたAllenNLPモデルのハイパーパラメータチューニングについて紹介しました。 ちょうどこのブログを書いていたときにallentuneでハイパーパラメータ探索を実行していました。
こんにちは@shunk031です。 Geforce RTX 2080Tiを50枚ほど使うとぽかぽかします。みなさんもぜひ試してみてください。
ハイパーパラメータ探索のライブラリでは hyperopt
や optuna
、GPyOpt
等がありますが、AllenNLPで実装したモデルに対して簡単にチューニングを実行できるallentuneはNLPの研究者や技術者には必須のものであると考えています。ぜひみなさん使ってみてください。
「期待検証性能(expected validation performance)」をもとにしたパラメータ探索の検証
こんにちは@shunk031です。 温泉は素晴らしいですが、ホテルのインターネットが遅いと生きた心地がしないので人生難しいと感じています。
この記事は彌冨研 Advent Calendar 2019 19日目の記事です。
今回はAllenAiから公開されているハイパーパラメータ探索allentuneに実装されているアルゴリズムであるShow Your Work: Improved Reporting of Experimental Resultsを紹介します。
背景および導入
自然言語処理の研究において、しばしば提案手法が先行研究よりも優れたテストスコアを出すことによって提案手法の良さを実証するというロジックで論文が書かれます。この論文では、こうしたテストデータに対するスコアだけで手法の良し悪しを判断するのは難しいことを述べています。また、validationデータを用いたモデルの訓練で得られるスコアに焦点を当てて検証を行っています。
本論文では computation budget
(例えばハイパーパラメータの探索回数やモデル全体の訓練時間) を関数として、ベストなモデルを発見するに至るまでの expected validation performance
(期待検証性能) を示しています。こうした指標に従って筆者らが先行研究の再検証を行った結果、より多くの時間を掛けてモデルを訓練することで、報告されているスコアとは異なるスコアになる場合があることを表しています。
期待検証性能
異なるハイパーパラメータ を割り当てられた複数のモデル の集合 を考えます。 あるハイパーパラメータ で訓練されたモデルを とします。 ハイパーパラメータを探索するにはたくさんの計算リソースが必要です。今回はそのリソースを表すような関数を computation budget として定義しておきます。
最適なハイパーパラメータ が見つかったときに、そのパラメータを設定した に対してテストデータにおけるスコアを論文に書きます。 ここで、 個のハイパーパラメータがある場合のベストなvalidationスコアは以下のように定義できます:
ここで、はtrainデータで学習させたモデル群とそのハイパーパラメータ群におけるvalidデータに対するvalidationスコアを返す関数です。
上記の式をもとに、異なるハイパーパラメータで何度も繰り返しvalidationスコアを計算したときに、の分布が得られます。 従って、期待性能 ]として推定可能になります。
本論文では、実験結果を得るために必要な計算コストを概算する方法を導入します。 個のハイパーパラメータにおける期待性能は以下のように定義できます。
この指標を用いることで、あるスコアに到達するまでに必要な計算コストについて知ることができます。
特にvalidationスコアに対する期待性能を 期待検証性能
と呼んでいます。
ハイパーパラメータ探索を行う際の推奨事項
ハイパーパラメータの値を決める手法として、 grid search
や uniform sampling
が一般的に使われます。また適応的にハイパーパラメータをサンプリングするベイズ最適化も有名です。
こうしたハイパーパラメータ探索を検証するために、実験の再現性を担保するためのチェックリストが示されています。
特に本論文で導入されている 期待値検証性能
を基にしたパラメータ探索の検証を行うために必要な項目もあります。
再現性を担保するためのチェックリスト
研究者が報告する実験結果の再現性の向上のために、以下のようなチェックリストが論文内で提供されています。
- 実験結果の報告について
- 計算リソースについて
- 各アプローチの平均実行時間
- train/validationの分割の詳細情報
- 報告された各test結果に対応するvalidationのパフォーマンス
- 実装の公開リンク
- ハイパーパラメータサーチについて
- 各ハイパーパラメータの探索域
- ベストモデルにおけるハイパーパラメータのセッティング
- ハイパーパラメータ探索の試行回数
- ハイパーパラメータのサンプリング手法
- validationのパフォーマンスの期待値
EMNLP2018におけるチェックリストの集計結果
以下は上記のチェックリストに対する有無のパーセンテージを示しています。
- 実験結果の報告について
- 計算リソースについての有無: 18%
- 各アプローチの平均実行時間の有無: 14%
- train/validationの分割の詳細情報の有無: 92%
- 報告された各test結果に対応するvalidationのパフォーマンスの有無: 24%
- 実装の公開リンクの有無: 30%
- ハイパーパラメータサーチについて
- 各ハイパーパラメータの探索域の有無: 8%
- ベストモデルにおけるハイパーパラメータのセッティングの有無: 74%
- ハイパーパラメータ探索の試行回数の有無: 10%
- ハイパーパラメータのサンプリング手法の有無: 14%
- validationのパフォーマンスの期待値: 10%
特にハイパーパラメータの探索域や試行回数が論文中に記述されない場合が多いようです。最近は実装が公開されている論文も多く見られるように感じますが、それでも30%程度であることも驚きでした。
おわりに
今回、allentuneに実装されているShow Your Work: Improved Reporting of Experimental Resultsで提案されている 期待検証性能
について触れました。計算コストの観点から期待できる性能をもとに検証を行っていました。
ハイパーパラメータ探索の再現性を担保するために、計算リソースの規模やハイパーパラメータ探索関連の設定等のチェックリストが示されていました。 より大規模化するモデルとそのハイパーパラメータ探索をより再現しやすくするために、こうしたプロトコルで適切に評価し、再現できるような世界になるとよいですね。私自身もこうした点に注意したいと思います。
GitHub Actionsで最新のmecab-ipadic-neologd辞書を持つdocker imageをDocker Hubにpushする
こんにちは@shunk031です。草津温泉からこの記事を書いています。温泉は良いぞ。
この記事は彌冨研 Advent Calendar 2019 17日目の記事です。
私のレポジトリshunk031/mecab-neologd-py3では、最新のmecab-ipadic-neologdを持つpython3用のdocker imageをTravisCIを使って定期的にビルドし、Docker Hubにpushしています。 今回はGitHub Actions公開に伴い、TravisCIからの乗り換えを行います。
以下、2019年12月現在の情報です。
GitHub Actionsを有効にする
まずはGitHub Actionsを有効にします。 こちらから指示に従ってGitHub Actionsにアクセスできるようにします。
Sign up for the beta
をクリックして進みます。
自身のユーザーアカウントが選択されている状態で Register for GitHub Actions Beta
をクリックします。
はい、完了です。早いですね。では対象のレポジトリで Actions
タブが現れていることを確認します。
Actions
タブが追加されています。今後はこのタブから設定を追加していきます。
GitHub Actionsでdocker imageをビルドする
GitHub Actionsでdocker imageをビルドするワークフローを定義します。
Actions
タブを選択すると、レポジトリの内容から自動的にマッチするワークフローがサジェストされています。今回は以下の Docker image
ワークフローをベースに、docker imageをビルドするワークフローを定義します。
以下が完成したワークフローです。GitHub Actionsのワークフローはyaml形式で記述します。
name: Docker Image CI on: push: schedule: - cron: "0 0 * * 2,5" jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@master - name: Sign in Docker Hub run: docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} -p ${{ secrets.DOCKER_HUB_PASSWORD }} - name: Build and push Docker image run: | docker build -t shunk031/mecab-neologd-py3 . export TAG=`date +%Y.%m.%d` docker tag shunk031/mecab-neologd-py3 shunk031/mecab-neologd-py3:$TAG docker push shunk031/mecab-neologd-py3:$TAG docker tag shunk031/mecab-neologd-py3 shunk031/mecab-neologd-py3:latest docker push shunk031/mecab-neologd-py3:latest
steps
にワークフローの各ステップを記述します。今回Docker Hubにdocker imageをpushするにあたり、Docker Hubへのログイン
と Docker imageのbuildとpush
にステップを分けて実行させました。
Docker Hubへのログイン
Sign in Docker Hub
と名前をつけたステップに、Docker Hubへのログイン処理を記述しました。ログインするにあたり、Docker Hubの username
と password
が必要になるため、Secrets
画面にて DOCKER_HUB_USERNAME
と DOEKCER_HUB_PASSWORD
を設定しました。これらの変数は表からは直接見えないように暗号化されます。
このようにSecretsで設定した変数はyamlファイル内で ${{ secrets.DOCKER_HUB_USERNAME }}
のように参照することが可能です。
Docker imageのbuildとpush
Build and push Docker image
と名前をつけたステップに、docker imageのビルド等の処理を記述しました。
私の場合、最新の辞書を持ったimageがlatestになるよう、またビルドした日付をタグに付与しています。日々新語や道語に対応し変化する辞書の任意の時点でのimageを取得したいというモチベーションです。
cronを用いた定期的なbuildとpush
mecab-ipadic-neologdは月曜と木曜に更新されます*1。したがって、その翌日の火曜と金曜に新しい辞書を取り込んだdocker imageのビルドを schedule
の cron
機能で自動ビルドを実現します。
設定方法はlinuxのcronと同様のフォーマットで記述します。私はcronのフォーマットをいつもググって確認しているのですが、以下のようにポップアップで実行される時間が表示されるのでとても便利です。
(おまけ) READMEにバッジを付ける
ここまででGitHub Actionsで最新のmecab-ipadic-neologd辞書を持つdocker imageをDocker Hubにpushできるようにしました。おまけとしてワークフローが正しく実行されるかひと目で確認できるバッジをREADMEに追加します。
READMEにバッジを貼る際に必要なURLは https://github.com/(username)/(repository)/workflows/(workflow_name)/badge.svg
で取得可能です。 workflow_name
は ワークフローを記述するyaml
の先頭にある name
です。
READMEにバッジをつけるととてもそれっぽくなるので好きです。
おわりに
GitHub Actionsで最新のmecab-ipadic-neologd辞書を持つdocker imageをDocker Hubにpushするまでの工程を確認しました。GitHubがネイティブに提供するCI/CD環境はあたりまえですがGitHubと親和性が高く、これが無料*2で使えるというのは素晴らしいです。
Acknowledgement
mecab-ipadic-neologdにはいつもお世話になっております。作者の Toshinori Sato (@overlast)さま、ありがとうございます!
KDD'19 論文採択: マルチタスク学習とconditional attentionによる広告クリエイティブ評価
こんにちは@shunk031です。 Geforce RTX 2080Tiを50枚ほど使うとぽかぽかします。みなさんもぜひ試してみてください。
この記事は彌冨研 Advent Calendar 2019 2日目の記事です。
国際学会KDD2019に論文が採択されました。 KDDはデータマイニング分野で最も有名な会議です。 発表は8月にアラスカでありました。ポスター発表での採択です。 個人ブログにも記録として残そうと思います。
論文採択までの道のり
本論文はGunosyとの共同研究での成果となります。論文採択までの道のりは以下のGunosyデータ分析ブログに詳しく書きました。
KDD採択による外部発表
KDD採択に関連して、勉強会や学会に招待していただきました。
ICML/KDD 2019 Pre-conference session
LAPRASさん主催の ICML/KDD 2019 Pre-conference session
にて、概要の発表を行いました。
LAPRAS @lapras_inc さんでICML/KDD採択者によるプレ発表会をやってきました!僕からもKDDで発表する内容を軽く説明させていただき、ポスターセッションでも議論させていただきました!素晴らしい会にお声がけくださったLAPRASの方々には感謝です。聞いてくださった皆様もありがとうございました😊 pic.twitter.com/UjXuW5mYjR
— しゅんけー (@shunk031) 2019年6月3日
テキストアナリティクスシンポジウム
第15回 テキストアナリティクスシンポジウムにて、依頼講演を行いました。 依頼講演のあとはリサーチインターン生とメンターを交えてパネルディスカッションの時間がありました。
参加レポート
KDDに参加した際の参加レポートを書きました。 僕は主に「広告xIT」や「解釈性・公正性」に関連したチュートリアルやワークショップに参加しました。
テンセントの広告技術が未来すぎる!AdKDD2019のテンセントAds招待講演まとめ
公平性および説明性を考慮した機械学習 in KDD2019
その他
KDD採択に関連して、いろんな方々に論文を読んでもらうことができました。 いくつかピックアップして以下に取り上げます。
arXivTimesさん
arXivTimesさんに取り上げてもらいました。ありがとうございます。
LINEさん
LINEさんの社内分析会議で取り上げてもらえました。ありがとうございます。
所感
今回採択された論文はたくさんの人の支えが合って執筆できたものです。締め切り前は必死に論文を書いていたのを今でも思い出します。 たくさんの思いがこもっているエモい論文がこうして素晴らしい学会に採択されて少しホッとしました。
沢山の人が支えてくれるので,僕はただ頑張るだけだと思って論文書いてます.たくさんの思いがこもってるエモい論文です.
— しゅんけー (@shunk031) 2019年1月28日
これからもたくさんの人とコラボレーションしながら、楽しく研究をやっていきます。
2018年の振り返り
こんにちは。@shunk031です。クリスマスにニューラルネットワーク"力"をお願いしましたが、何も貰えませんでした。サンタさんはHinton先生ではないみたいです。毎年同じお願いをしている気がします。
驚くべきことに2018年も今日で終わりみたいです。この1年何をやってきたか振り返りも兼ねて、思い出せるイベントについて軽く残しておこうと思います。
1月
2018年の目標をざっくり決めた
やりたいことをざっくり決めました。 shunk031.hatenablog.com
卒論執筆
卒論を書いてました。そんなに苦しまずに書けました。真面目に研究進めててよかったです。
言語処理学会予稿執筆
卒論でやっていたことを言語処理学会用に書き直していたりしました。こっちのほうが予稿が公に公開されるので先生のレビューが大変でした。初めてちゃんとした予稿を書いたので勉強になりました。
2月
頭痛が続く
2週間近く頭痛が続き、1週間ほどパソコンを触れないぐらいでした。病院で脳CTと血液検査を行いました。結果、脳は特に問題なかったのですが血液検査で肝臓が悪いことが判明して謎でした。処方された薬を飲んでいたら頭痛も治りました。人間の体って難しですね。
JSAI Cup 2018 人工知能学会データ解析コンペティションに参加
SIGNATEのクックパッドコンペに参加していました。去年よりもいい順位になったので少しは成長しているのでは説がありました。
www.slideshare.net
3月
言語処理学会 2018 in 岡山
岡山で開催された言語処理学会に参加しました。
10:30からの文書分類セッションB6-5で「CE-CLCNN: Character Encoderを用いたCharacter-level Convolutional Neural Networksによるテキスト分類」という発表をします!NLPに対してCVの手法を惜しげもなく使ったチャレンジングなモデルになってます.興味がある方はぜひ聞きに来てください! #NLP2018
— しゅんけー (@shunk031) 2018年3月14日
卒業旅行
言語処理学会終わりに岡山から広島、島根を回りました。
大学卒業
え、もう大学4年間終わるんですか?という感じでした。とても充実した4年間でした。
明日卒業式でスーツなのですが、いわゆる黒の就活カバンみたいなの持ってなくて黒のカバン探した結果です #OpenSUSE pic.twitter.com/Y9YSplmgS3
— しゅんけー (@shunk031) 2018年3月23日
FaberCompanyインターン
参加しました。3日で10万円もらえて最高でした。
第2回Cpaw AI Competition主催
主催しました。参加者の方々に満足していただけてよかったです。
4月
大学院入学
学部から引き続き法政大学の大学院に進学しました。同時期にGPUが40枚ぐらい一緒に入学してきました。
NVIDIA Deep Learning Seminnerに参加
参加しました。最先端の研究事例とかを聞けて楽しかったです。
5月
研究室運動会
毎年やってるんですが、めちゃくちゃ楽しいです。
AIPR2018執筆
卒論でやっていたことをまとめて国際学会に出そうということでやっていました。
Our #AIPR2018 workshop paper "End-to-End Text Classification via Image-based Embedding using Character-level Networks" is available on arXiv: https://t.co/05JmXldz0c
— しゅんけー (@shunk031) 2018年10月9日
We improved the performance of NLP using image-based data augmentation (used Random Erasing in this time).
6月
DLLabハッカソン参加
参加しました。当日にチームに振り分けられ、対象データセットを用いた識別器を作るハッカソンでした。Azure上でdockerを動かして識別器を構築する感じでした。途中dockerコンテナがハングして消し飛んでしまい、ボリュームもマウントしていなかったのもあってスナップショットも消えてしまいました。スコア的にはトップを取れそうだったので悲しかったです。このあとめちゃくちゃdocker勉強しました。
Piascore DLアドバイザー
DLLabハッカソンでSoTAを詰め込んだ手法でモデルを構築しているところを認められ、同じチームだったpiascoreさまにお話を頂いてdeep learning技術中心のアドバイザーを始めました。僕自信もとても成長できるディスカッションを複数回させていただき、とても勉強になりました。
7月
バイト
何社かサマーインターンを応募して受かっていたのですが、最終的には好きなことをやらせていただけて時給も他社と合わせていただけたgunosyで広告周りの研究開発をさせていただくことになりました。
ISIC2018コンペティション参戦
ISIC2018の皮膚障害自動診断システムのコンペティションに参加していました。このころ結構大変で辛かった思いがあります。そもそもメインでNLPをやっていたのでCV系の話で英語論文書くとは思っていなかったです。
8月
バイト
引き続き広告周りの研究開発をやっていました。そのままYANSに出そうという流れでエイヤでやりました。メンターさん、指導教員両方にとても迷惑を掛けてしまう感じになってしまったのですが結果をまとめられてよかったです。
HackU最優秀賞受賞
時間がない中進めていたHackUにて最優秀作品賞をいただくことができました。初めてみんなとチーム開発できたので楽しかったです。
YANS2018 in 香川
夏休みにgunosyでやっていたことをまとめてYANSで発表しました。うどんを食べまわったのをよく覚えています。
9月
Cpaw LT
LTで皮膚障害自動診断の最新動向について発表しました。
研究室合宿
今年は秩父でした。B4が卒論中間発表の練習をするのを応援するだけなので修士ポジションは楽でした。最終日雨の中ラフティングをやったのをよく覚えています。
10月
AIPR2018参加
初めての国際学会で、そもそも初めての海外でした。めちゃくちゃ楽しかったです。また論文書いて海外行きたいです。
第3回Cpaw AI Competition主催
主催しました。参加者の方々に満足していただけてよかったです。
11月
大学院の授業で論文読み
大学院のヒューマンインターフェースの授業で論文読みをやりました。
初めての国際学会も終わったところで、こんなことを考えてました。
ここ半年ずっと感じてる事なんですけど、少ないインプットに対してずっとアウトプットを吐き出し続けてる感じがしていて、実はもう何も吐き出せないのに無理してる感じがするんですよね…忙しいのはありがたい事だけど、もう少ししっかり勉強する時間を作らねばなぁと思いながら目の前のことに精一杯で
— しゅんけー (@shunk031) 2018年11月27日
12月
Kaggle Meetup Tokyo LT参加
これまで主催してきたCpaw AI Competitionの話をさせていただきました。各所から同様のことをやりたいというお話もあり、いろいろなフィードバックをいただくことができました。
アドベントカレンダー執筆
初めてアドベントカレンダーなるものに2つほど参加して記事を書きました。
修論中間発表
学会で発表したものをそのまま発表しました。難なく終わってよかったです。
国内学会論文執筆
情報処理学会2019と言語処理学会2019を並行して書いてます。大変なことになってます。
実装とか
Chainerを用いた再現実装をいくつか公開したりもしました。最近はPyTorchも書いたりしてます。
github.com github.com github.com github.com github.com github.com github.com github.com
まとめ
外部で発表することが多い1年でした。B4でインプットしたことを吐き続ける1年だったなとも感じます。来年はM2となり進路を考えなければならなくなったりと、純粋に研究だけに打ち込める時間が減りそうなのが心配です。引き続きインプット・アウトプットを大切にしていきます。
Xonshの設定を ~/.xonsh/*.py に分割して読み込む
こんにちは。shunk031です。この時期こたつに入って読む論文は最高ですよね。
この記事は Xonsh Advent Calendar 2018 17日目の記事です。
xonshの設定をする際、設定ファイルを複数に分割して読み込みたいなーと考えました。 そこでふと思ったのが「あれ?Pythonって先頭にドットがあるモジュールって読み込めるんだっけ?」という疑問です。
今回はホームディレクトリに .xonsh
というドットから始まるディレクトリを作り、そこに分割した設定ファイル群をxonsh起動時に読み込む方法を調べました。
方法
まずは .xonshrc
の設定例を示します。
import imp import os import sys XONSH_DIR = os.path.expanduser('~/.xonsh') sys.path.append(XONSH_DIR) open_file, file_name, desc = imp.find_module(XONSH_DIR) dot_xonsh = imp.load_module(XONSH_DIR, open_file, file_name, desc)
以上の方法で ~/.xonsh
をモジュールとして読み込むことができます。
詳細
対象のディレクトリをPythonモジュールとしてインポートする
対象のディレクトリをPythonモジュールとしてインポートする場合は sys.path
にディレクトリのパスを指定します。
import os import sys XONSH_DIR = os.path.expanduser('~/.xonsh') sys.path.append(XONSH_DIR)
先頭が ドット
であるディレクトリを読み込む
ディレクトリ名の先頭が ドット
から始まる場合、 imp
モジュールを用いて以下のように読み込みを行います。
import imp
open_file, file_name, desc = imp.find_module(XONSH_DIR)
dot_xonsh = imp.load_module(XONSH_DIR, open_file, file_name, desc)
このようにして .xonsh
ディレクトリを dot_xonsh
モジュールとして読み込むことができます。
まとめ
Xonshの設定を ~/.xonsh/*.py
に分割して読み込む際の「ドットから始まるモジュールの読み込み」の方法についてまとめました。imp
モジュールを用いたモジュールのインポートを用いることでドットから始まるモジュールも読み込むことが可能となります。