2021年の振り返り

こんにちは。くるぴーです。

新卒SEから機械学習への転職を決意してから5年が経ちました。
普段あまりこういうブログは書かないのですが、今年を振り返りたくなったので雑に箇条書きで書いていきます。

kaggle

今年は3本のコンペに参加し、金2枚と銀1枚でした。チームを組んでくださった皆様、twitterで切磋琢磨?煽りあい?交流?に付き合ってくださった皆様、ありがとうございました!

1. Riiid Answer Correctness Prediction

概要

SANTAというTOEICの学習アプリを提供する会社のコンペ。
「出題された問題をユーザーが正解できるか」を予測するもので、学習データとして過去にユーザーが解いた問題が提供される。
特徴的なのはデータが1億行あること、Time Series API(※)での提出が求められること。
(※)ストリーミングデータのようなイメージで、数十行ごとのバッチでデータを受け取り予測を返す。

成績

チーム参加(takoiさん)
public 13/3395, private 13/3395(Gold)

解法

www.kaggle.com

全く整理しておらず見るに堪えないと思いますがコードは以下です
振り返ると600近く実験していたようです…
github.com

所感など

  • 推論速度・リソースとの闘いだった。
    • 1バッチあたり0.4~0.5秒で推論を返さないといけない制約が厳しかった。
    • Time Series APIでは、学習データに加えてストリーミングで受け取ったユーザーのデータを蓄積していく必要があります。1億行あるので工夫しないとすぐメモリーエラーになってしまいました。。
    • 対象ユーザーのデータを検索するのが大変でした。辞書で持つと検索は早いがハッシュでメモリを食うし、貪欲に探していくと推論速度全く間に合わない…
  • python(というかプログラム全般)について知れた。
    • (恥ずかしながら)なぜ辞書型はキーが多くなるとメモリを食うのか、すら知らなかった…
  • テーブルデータでTransformerを使う経験が詰めた。
    • 結局LightGBMよりも圧倒的に精度がよかった。
  • twitterでコンペ参加者と交流できたのがとても楽しかった。
    • 好奇心の刺激や経験を積むという観点で有意義かつ楽しいものの、この”ネトゲ感”が外れるとkaggleをやらない気がする

2. Shopee - Price Match Guarantee

概要

東南アジア・台湾で主要なECプラットフォームであるShopeeが開催したもの。Shopeeでは掲載商品に対して「最低価格保証」機能を提供している。この機能に必要なのが「プロダクトマッチング」。このコンペでは商品の画像とテキストのデータが与えられ、そのデータに類似した商品を予測する。

成績

チーム参加(kicchoさん、cpptakeさん)
public 6/2426, private 6/2426(Gold)

解法

www.kaggle.com

全く整理しておらず見るに堪えないと思いますがコード github.com

所感など

  • 距離学習、リコメンドを全く知らない状態だったため、勉強目的で参加した
    • 使い方や理論の理解が進み、成果も出せたので目的は達成できた
  • チームプレイがとても楽しいコンペだった
    • チームメイトであるkicchoさんがmlflowを解放して全員の実験管理を集約できた
    • 毎晩のようにペアプロやコードレビュー、ディスカッションをしていた
    • コンペ最終日の夜にはgoogle slideでサマリースライドをみんなで作ったのが一番楽しかった
  • マルチモーダルなモデル(textとimageをtransformerでいい感じにするとか)について論文をめちゃくちゃ試したけど全く当たらなかった
  • モデルの推論結果を目視確認・定性的に確認してFBできたのはよかった

3. CommonLit Readability Prize

概要

与えられた児童向け文章の対象年齢を当てるコンペ

成績

solo参加
public 6/3633, private 22/3633

解法

www.kaggle.com

コード

こちらも見るに堪えないですが以下にあります

github.com

所感など

  • takoiさんがpublicの1位にいるのを見て、一緒にGMになりたいと思い参加した
  • BERTのチューニングテクニックをかたっぱしから試した
    • paper:https://arxiv.org/pdf/2006.05987.pdf
    • この論文にも記載があるようにreinitializationが非常によく効いた
      • pretrain後のBERT最終層数層の重みを初期化する
  • discussion expertという裏目標は達成できた
  • メダルが変わるshakedownを初めて食らって悔しい...

総じて

  • それぞれのコンペで新しい技術を知ったりtwitterのみなさまとワイワイやれて楽しかった
  • まさかGMリーチまで来れるとは思ってもみなかった。CommonLitでGMになれなかったので、来年頑張る

仕事

  • 入社してからずっと携わっていたプロジェクトで社長賞がもらえた
    • MLの要件整理から導入運用効果出しまで現場の業務をキャッチアップしながらできたのは楽しかった
    • 多くの人とコミュニケーションをとる必要があり、コミュニケーションコストを意識することが前よりできるようになった気がする
      • パワポ芸が上達した(本も何冊か読んで勉強した)
  • また別のプロジェクトでは、非エンジニア2名と一緒にMLのシステムをチーム開発した。
    • テストドリブンな開発を導入した(誰に教わったわけでもないのでやり方があっているかは怪しい)
      • システムの改修を強気にできてとてもよい
      • 「テストコード書いてよかったです」と言ってもらえたのがうれしかった
    • システムの設計をあーだこーだ議論するの楽しかった
  • 工場系の分析やMLが多かったが今年は別のドメインでも少し仕事している
  • エンジニアリング、カスタマーサクセス(コンサル?)、機械学習(の上澄み)、今のところまんべんなくやっているけど、どの方向性に進みたいのかはずっとわからない
    • エンジニアリング
      • 設計を書いて、テストコードを書いて、テストコードが通るコードを書く、これが楽しい
    • カスタマーサクセス(コンサル?)
      • ユーザーや顧客の課題を聞いて、それを解決する仕組みを作るのも好き。SE時代からその傾向は強かった
      • 自分が技術的に貢献していると感じるのがどうやら大事な要素になっていると思う
        • そのためコンサルだけ、みたいなのはあまり興味がない(自分でもよくわからない)
    • 機械学習・データ分析
      • 明らかに素養やベースが理系院生の人と比べると全くかなわないなと感じる
      • テーブルデータから(ドメインも勉強して)特徴を作って、みたいなのは大好き
        • データを見ること自体が好きなよう
  • 自部署では意欲的かつ高い能力を持った人に囲まれていて、組織も寛大(スーパーフレックスが適用されている、裁量が大きくいわゆる「根回し」みたいなのが少ない)ので現状楽しく働けている。心理的安全性も高いと感じる。

副業

2021/11~ 副業を始めた

動機

  • 一度正社員+副業という働き方をやってみたかった
    • フリーランスと正社員の良いとこどりをしてみたかった
    • 自分の実力を知りたい、全然違う技術・業種で仕事してみたい
      • 社内では1プロジェクトにデータサイエンス1名となっていて個人商店感があり、人の仕事を見たりFBを受ける機会が少ない(風通しが悪いわけではなくざっくばらんに相談したりはする)
        • 誰に教わったわけでもなく我流で全部やっているのであっているか不安
      • 社内では主に工場系にアサインされることが多くほかのドメインをあまり知らない。いろんな業種を見てみたい

所感など

  • twitterのプロフィールに「副業募集」を記載したところ数件お声がけいただき、うち1社で2021年11月からお世話になることに
    • 徹底したドキュメント文化に感動した
      • わからないと思ったことがだいたいドキュメントを調べたらわかる
        • 自社のライブラリや固有のルールなどがあるはず
      • フルタイムじゃない&フルリモートの僕でも、メンターの手をあまり借りずにキャッチアップできた
    • 技術的なFBが的確で議論していて勉強になるし楽しい
    • 短い時間でアウトプットを出さなければいけないのは少なからず負荷になる(圧力をかけられたりといったことは一切ない)
  • 2か月の契約期間だったが無事継続をもらえたので、井の中の蛙ではないことがわかりちょっと安心した
  • 本業やめて副業だけ(もはや副業とは言わないが)で働き方をスローダウンしてみたい欲望がちょっとだけある
    • 現状本業の職場環境&仕事内容が良いので、環境が変わってしまったらちょっと考えるかも

仮想通貨bot

kaggleのshakedownに心が折れたのと自動取引やってみたいと思っていたので、9月ごろから仮想通貨bot開発をはじめた

動機

  • いろんな方向で収入が欲しい
  • 趣味でシステムを組む行為自体が好き(プラモデル的なイメージ)
    • うまくいけば実益も伴う

      所感など

  • 通算5回目となる自動取引プログラム
    • まともにクラス設計を業務でやったことがないがそれなりにできるようになったのは、5回のscrap&buildが大きいと思う
      • 1回目の自動取引プログラムは、新卒同期の超つよつよエンジニアに個別で何回かご指導をもらったのが実力向上に大きく寄与した気がする(ありがとう)
  • しっぽは掴んでいる気がする(とずっと言っている)が、まだ勝てるアルゴは組めていない
  • kaggleと違ってネトゲ感がないのでモチベが続かない
    • 2回/週で僕含め2名でもくもく会をしているのがモチベkeepの源泉になっている

その他

哲学

  • 1~3月、ちょっとだけ哲学の本を読んでた
  • twitterで話題に上がっていた哲学チャンネルをずっと見ていた
  • 「考える」ことが好きな人はきっと面白い気がする
  • kaggle参戦に伴い、哲学から離れていった…

www.youtube.com

mocri

  • mocriで朝もくもく会などをしていろんな人とお話しできた
  • 僕が非首都圏住みだったのもあり、ずっとFFだったのに話したことがない人と話すことができたりとよかった

サウナ

  • 何がキッカケだったか忘れたがサウナ少しハマっていってた
  • 整うことがなかなかできない&気軽に行けるサウナがなく、自然と遠ざかってしまった。。

ゲーム

ここ数年間でかなりゲームをやった年になった気がする - slay the spire - ローグライクカードゲーム - 風来のシレンをはじめとした不思議のダンジョンオタクにはたまらなく楽しく、ずっとやってた - 身一つで突っ込む、信じるのは己のスキルだけ、っていうのめっちゃ好き - ポケモンユナイト - 8月からずっと100時間/月稼働をずっと続けるくらいにドハマりしている - kaggler5名でチームを組んで大会にも出ている(最高3回戦) - 僕と相互フォローで興味ある人いたら声かけてください!!

日記

  • もう8年くらい、ほぼ毎日つけている
  • 年の瀬ということで読み返しましたがkaggleや仮想通貨botのメモ帳、勉強ノートになっていて、どんなことを考えてるのか全くわからない
    • 実は何も考えてないだけなのでは…