振り返って:ポエム、あるいは自己紹介的な何か
※この記事に技術的要素はありません。Twitter で垂れ流そうとしたら長くなりそうだったためにブログに書いたネガティブポエムなので暇つぶし程度にご覧下さい。
はじめに
最近、でもないか、転職の話が Twitter では毎日のように流れてきます。
直近の僕の観測範囲で印象に残っている例だと、某🐸るるさんが転職決めて沢山の kaggler から祝福を受けていたり、ACL の論文のまとめを上げまくってる激つよな方が転職決めたり、退職カウントダウンカレンダーを始める方がいたり、正体不明の画家に名前が似ている人が転職したり...
現職に新卒で入ってもうすぐ3年経つし、何となくキャリアって考えないといけいないのかなって思って雑に書きました。大したものではなく、気の迷いで公開したくなっただけ。
バックグラウンド
情報学科に入学し、卒業後そのまま情報学研究科に入って周囲に迷惑をかけながらも何とか修了。
今をときめくCS系の学位持ちってやつですが、競争が激化する前に入った世代です。学位持ってるからといって優秀で豊富な知識があるわけではない。
因みに情報学科に入ったのは「これからパソコンとか出来るといいのかな~」くらいの軽い気持ちであった。なので入学1年目くらいは
- 入学初期の Ubuntu 教える授業で、GUI 操作しかできず先生に苦笑いされる(実はこの人が最終的にめっちゃ迷惑をかけてお世話になった指導教官である)
- scheme (Lisp の一種) を教える授業で括弧の海に沈む
- 情報理論って何?
- ... etc.
といった感じでもう右も左もわからない感じでした。
ちょっとずつアルゴリズムとかに興味を持ち始めて勉強に身が入るようになったと思う。データマイニングに興味があって、研究室では身近な Twitter の分析をしてお茶を濁してました。正直もっとちゃんと研究をすべきだったのかも。
今はすっかり機械学習ライブラリユーザですが、大学時代はシンプルな分析で仮説を検証する感じだったので使ったこともなく、噂だけ聞いたことある感じでした。
python との出会い
今や僕の最も使用する言語と化した pythonですが、実は大学 4 回生になるまではほとんど触ったことが無かったです。(授業で触ったものは、確か scheme => C・Java => OCaml => C++ だったと記憶している)
4回生で研究室に配属された際に先輩が使っていたのを見て何となく使い初め、以降 Twitter からのクロール(この時代はAPIが緩かったなあ..)、データの整理(sqlite)、実験コードなど全て python で記述。
これが僕の python 力を鍛えた... と言いたいところですが、python の習熟度を上げに上げたのは別の要因があります。
競技プログラミングとの出会い
修士1年の後半くらいから、研究室の先輩からの勧誘を受けて始めました(就職後は休止しちゃいましたが...)。そこから熱中して、一年後に目標としていた CODE FESTIVAL 本戦にギリギリ参加できたのでめっちゃ嬉しかったです。休止直前に TopCoder で何とか青になりましたが、今はもう緑色位の実力でしょう。
やってる方はご存知かと思いますが、python で競プロをやるのは実行時間的なハンデを負います。このため、出来るだけ標準ライブラリを用いた実装をして高速化したり、python の動作速度を知ること(例:if 文は遅い)が求められました。heapq などの実装されているデータ構造や iterttools 系・collections 系の便利モジュールはもちろんのこと、何か使えるものは無いかと公式ドキュメントをめっちゃ読みました。
これが後に「ちゃんとライブラリのdocument を読む」ことにつながったと感じています。
また、思い描いた処理・アルゴリズムをちゃんとコードに落とすのを何回もやったのも大きいです。どうしても計算量的に実行時間が無理ゲーなやつは C++ で書いてましたが、基本的に python で書いていたのもあって習熟度がどんどん上がったと思っています。
余談ですが、好きなアルゴリズムはいもす法(最初みたとき感動した)、好きなデータ構造は BIT です。
機械学習との出会い
「データ分析とか機械学習したい」といって就職し、運よく研究部門に配属され、scikit-learn とかを触り始めます。訓練データ・検証データ・テストデータ みたいな概念もこのときからやっと意識するようになりました。
実データ(神excel)をもらって加工して予測モデル作ったり、深層学習に興味持ち始めて触り始めたり、なんやかんやで2年以上経って今に至ります。
データ分析コンペティション (kaggleなど) を夏からプライベートで始めたのは、もっといろんなデータに触って分析力・実装力を上げたかったため。深層学習や画像系の知識が前より身に付いたのは分析コンペのおかげです。
経験してきたこと
僕の職種は何と呼べばいいかをよくわかって無いです。
研究者というには研究してないし(というか研究ってなんだ)、データサイエンティストというには事業への関わり方が薄いし、やっぱり python おじさんとかMLライブラリユーザが妥当か。
一応やったことあることを上げると
- python によるデータ整形・可視化・機械学習モデルの訓練
- 英語論文を読んで自分で実装・検証
- 協業先と協力して機械学習の予測モデルを用いたプロトシステムの開発・提供
- ※複数メンバーでやっており、主な担当はアルゴリズム部分とか全体の流れの確認とか
- ちょこちょこした改善を特許化・論文化する
- 分析コンペへの参加
- 社内(国際学会WS系にチームで参加)
- Job Recommendation コンペ:3位 / 103 チーム
- Author Profiling コンペ:1位 / 23 チーム
- プライベート
- 社内(国際学会WS系にチームで参加)
んー本当に狭い範囲のことしかしてない感ある。
何に楽しみを見出す?
- 応用系の面白い論文読むとワクワクする
- なんらかのタスクで自分が考えた仮説・工夫がうまく行くとテンションが上がる
- 機械学習コンペはまさにこれ
- 自分でプログラミングして動かすのが楽しい
- メンバーと「この技術凄くね!?」みたいな情報共有すると高まる
こう見ると、今の職場は割と合っている。きっと。
今後どうする?
これまでやってきたことは、あくまで固定したデータセットの中で機械学習モデルを作って性能を評価するのがメインでした。 多少泥臭いことも経験しているものの、基本的にはアルゴリズムの部分だけしか触ってないです。
でも、今後これだけで生きていくのは結構キツイと思っています(※能力が究めて高い人は別)。機械学習ライブラリを使えるだけの人間の賞味期限切れは迫っているので。
研究者として生きたいのであればちゃんと自分のやりたいテーマを見つけて分野への専門性を高めていくべきだし、データサイエンティストになりたいのであれば分析と事業における価値をマッチさせられるようになる必要があると思っています。
現状はとても中途半端で、このまま 2,3 年すれば自分自身の対外的な価値は消滅しそうだと焦りを感じ始めました。(kaggle をやり始めたのは実力 up + 自分自身の価値を何とか担保したかったからというのもある。)
なんかあれなんですよね、中途半端に研究に興味あって論文読んだり勉強したり実装したりするけど自分で良い論文をかける実力は無く、さりとて事業貢献出来ているでも無くっていう。
今は良いんだけど今後死にそうなんですよね。価値を生み出せない奴を採りたい人がいるとは思えない。
5年後のキャリアとか全然見えない。が、少なくとも「こういう実績があります」は言えるようにした方がいいとは思っている。それは論文でも、実際に事業に貢献した例でも良いけど... このままではまずい。
結局何が言いたいの?
まとまらない。漠然とした迷いと焦りがある。当初はもっと「今後こうしたいんだ!」みたいな明るめの記事を書くつもりだったのに暗くなってしまいました。こんな記事を書くくらいなら kaggle やってる方がずっと生産性があると思います。
以前友人と「大学の(知識的な)貯金を切り崩して生きている」って会話をしたのが印象に残っていて、今の僕も貯金を切り崩して生きているように感じています。
あー死ぬまで遊んで暮らせるお金があったら、こんなこと考えずに日がな面白そうな論文よんだり実装したりして幸せに暮らせそうなのになあ。人生ままならないですね。