A Day in the Life

Kaggle コンペ Feedback Prize - English Language Learning でチーム参加17位銀メダル取得で、Kaggle Master へ

Kaggle のコンペティション、Feedback Prize - English Language Learningが終わり、約2700チーム中17位で銀メダル取得(予定)となった。これで順位確定すれば合計金メダル1つ、銀メダル2つを取得し、Kaggle Competition Master の条件を満たす予定で、コンペを始めた当初目指していた Master の称号を年内にとることができそうだ。自分一人ではこの結果にはならなかったと思うので、チームメンバーの@masakiaota氏、@olivineryo氏に感謝だ。

Public LBではコンペ終了時に8位/2700チームの成績で金メダル圏内だったが、Public LB がLB全体の26%のデータでのスコア。スコア表示も小数点以下第二位まででLBのスコア表示がざっくりとしており、かつ我々のCVではかなり悪いスコアがPublic LB上ではやたら上位になったりとCV・LB相関が観測できないため Public LB が信頼できず、最終的な Private LB の結果は大幅なshake(結果のランキングが乱高下する)が起きると予想していた。

そのため、最終提出にはCV最高の物、LB最高のもの、また疑似ラベルを使わないCV最高のもの(疑似ラベルを使うとCVが圧倒的に良くなるが、CV最適化しすぎやリークの疑念があった)、3つを提出した。本コンペは別のPrizeもあるため、3つの提出枠があったのでこの3つを選択したが、2つの提出だったら非常に悩ましい選択になったであろう。

結果17位

結果としては、Public LB では8位だったが、Private LB ではランクが下がってしまい17位となり、残念ながら金メダル(今回は15位以上)を逃してしまった。あと2位上なら金メダルが採れたのでめちゃくちゃ悔しいけど、数十~数百位順位を落としたチームもあるので、それに比べると9位ダウンですんで良かったぐらいだ(Public LB 1位の人は175位も落ちてしまった)。金を取るのは難しいと再確認した結果であった。


コンペ課題

本コンペは、学生の書いた英語を評価する Feedback Prize(以下FP)シリーズの3コンペ目。課題は学生の書いた文章を「文法」「単語」「構文」等、6つのカラム軸で1.0~5.0まで0.5ポイント刻みで評価したものを推論するというもの。評価指標はMSRMSE(mean columnwise root mean squared error なので、カラムごとのRMSEの平均)。以前のFP1,FP2過去コンペのデータがあるので疑似ラベルとして使えそうだとか、6つのカラムごとの評価軸をどう最適化するのか、といったことを考えながら試行錯誤していった。

解法

以下に書いてある解法を組み合わせたアンサンブルモデルを3つ提出。一番 Private LB が良かったのは、疑似ラベルを使わなかった11モデル組み合わせのアンサンブルであった。

backbone モデル選択

backbone モデルに現時点の最高汎化性能を持つモデル deverta v3-large を使うよりも、Public LB では deverta v3-base のほうがスコアが良いという結果で、この結果を自分は鵜呑みにして学習や最適化をしていった。複雑な重み(24 layers)を持つ v3-large より、半分の重み(12 layers)の v3-base のほうが本コンペにおいては良いスコアが出るのではないだろうか、複雑な文章を書かない学生の文章の場合、シンプルな方が良いのかもしれない、と考えた。

ただ、最終的な Private LB では v3-large がやはり強かったので、LBはあてにせず、CVを信じ v3-large を中心に戦略を組み立てていくべきだった。

  • deberta v3-base
    • 本コンペ Public LB では圧倒的に強い
  • deberta v1-large
    • CV, LB共にある程度効果的
  • deberta v3-large
    • CVには効果的だが、Public LBではむしろ混ぜるとかなり下がる
    • Private LB ではそんなことなかった

自分たちチーム独自の解法

Discussion で話されていなかったもの、もしくは誰かが話していたかもしれないが効果的だから取り入れよう!とはなっていなかった物。なお本独自解放の大半はチームメンバー発案で私はあまり貢献していなかったりする…、優秀なチームメンバーに感謝。

  • 6 columns を個別に AttentionPooling
    • MeanPoolingよりもだいぶスコアが上がる
  • Poolingしたものに LayerNorm をかける
    • これもだいぶスコアが上がる
  • maxlen: 640
    • 長い maxlen より、640 切り詰めることでスコアが上がった
    • ただし devarta v3-large のみ、もっと長い maxlen を指定し、Sliding Window Attention で分割して学習したほうがスコアが良かった
  • 疑似ラベル(Pseudo Labeling)
    • CV にとても効いたが、LBにはあまり効果がなかった
    • 情報リークした疑似ラベルを使うと、CVが更に良くなる。そのため注意を払って情報リークは取り除いた(つもり)
    • 疑似ラベルデータには過去コンペのFP1, FP2のデータを利用
    • 疑似ラベルのスコアリングには、学習したモデルが出したスコアをアンサンブルして利用
      • シングルモデルの疑似ラベルではすぐに学習しきってしまうが、アンサンブルした疑似ラベルを使うことでCVを上げ続けることができた
    • なお疑似ラベルで学習したシングルモデルで、CV最強ではないが程よく増加した物が Private LB では最高。これを最終subに選択しなかったのが痛手…
  • PostProcess
    • 1.0以下は1.0に、5.0以上は5.0に丸め込む。スコア微増。
    • アンサンブルするときに、6カラムごとそれぞれに最適なウェイト考え、CVスコアを最小化する最適化問題として求める。例えば4アンサンブルなら、4x6 = 24 のウェイトを求めて適用する。スコア微増。
      • なお最適化問題として定義して解くのに、scipy.optimize.minimizeを利用した。scipy で解けると知らなかった、かんたんにつかえて便利。

Discussion で話されていた物

  • Layer re-initialize
    • もともと学習してあるレイヤーの最終n層を初期化する。最終1層のみ初期化がベストだった。
    • だいぶ効く
  • LLRD ( Layer-wise Learning Rate Decay )
    • layer ごとに徐々に学習率を下げていくテクニック
      • large系が0.8, base系が0.7225ずつLRを減衰させていった
    • だいぶ効く
  • Layer Freeze
    • 初期n層では学習しない。LLRDを適用するとlargeモデル(24 layers)の初期層はそもそも学習されないので、largeモデルでは初期12層をfreezeすることで学習の高速化につながった。
  • AWP
  • Multi Sample Dropouts
    • スコアはほぼ変わらないが、学習が安定したので入れた
      • 0.2 * 5 の dropout を追加

スコアには効かなかったが、知れてよかった事

RAPIDS SVR。RAPIDS SVR の手法では、NNでは学習させずに特徴表現となるembeddingsを取り出す用途のみに使い、それらをcuMLを使ってcuda上でSVR(Support Vector Regression)で学習させて解くというもの。SVRの学習自体は(GPUにもよるだろうが)一瞬〜数秒で終わる。え、こんな方法で?と思ったのだけど、初期に作ったbaselineよりは良いぐらいのスコアを出すことができた。ただ、上位解法ではRAPIDS SVR を取り入れた解法もあるようなので、自分が性能向上にうまく活かせなかっただけな可能性も高い。

SVRは素早くなかなか良いスコアが出ることも良いのだが、NNのバックボーンモデルの性能評価として、ある程度SVRで学習したものと相関が出せたのも便利だった。SVRでスコアが振るわないNNのモデルは、結果きちんとNNで学習させてもスコアが振るわないことがほとんどだったので、バックボーンモデルの検討(とりわけ最後のアンサンブルで何のモデルを使うべきかたくさん検討するタイミング)の指針として役に立った。

また、NVIDIA が作っているライブラリcuML自体を知らなかったので、それを知れたのも良かった。cuML はいわゆる scikit-learning にあるようなベーシックな機械学習アルゴリズムを cuda で動かすことができ、ものによっては超高速に動く。またインターフェイスがたいてい sklearn 互換なので理解しやすい。今後はCPUでやると数分〜かかるような機械学習の場合、cuMLの利用も検討していきたい。


本コンペを終えて

本コンペを終え、念願の kaggle competition master になることができそうだ。メダルが出るコンペに初参加から3連続で金or銀メダルが取れたのは、ソロ参加コンペ以外は当たり前だがどちらのコンペもチームメンバーの貢献が非常に大きい。とりわけ、kaggle コンペに誘ってくれた青田氏には感謝が尽きない。

ただ前回ソロ参加したときも感じたことだし、本コンペでも改めて思い知ったのだが、自分が金メダルを取れるアイディアを出せたかというとそうでないので、ソロ参加金メダル(kaggle competition gradmasterになるために必要)を取るには現時点では実力不足で、大きな高い壁が見えている。ソロ銀メダルならその課題ドメインに対するアプローチ方法を知っていれば、何回か挑戦すれば取れる気がするが、金は今の所取れる気がしない。ソロ金メダルをとった方々はほんと凄いな〜と思う。

また、毎度自然言語処理のTransformer + Encoder 課題で解けるものばかりやってきたので、次に参加するなら同じような課題を解いてメダル取得を優先するよりも、スコアは振るわない可能性が高いが別の知見が得られる課題をやっていきたい。まだまだ初学者なので、大抵の機械学習アルゴリズムや課題解決アプローチは知的好奇心が刺激されるものばかり、引き続き楽しみながら知識を広げていけたらと思う。

2022年11月29日

iPad Pro 11インチ(2018モデル)のバッテリーの減りを早く感じるようになってきた。買い替えも検討したけど、このスペックで全く困っていない。Apple のサポートページを見ると、15000円でバッテリー交換してくれるようなので申し込もうと連絡すると、サポートの人との会話が始まり、あれこれ質問に答えつつ診断ツールで状況を見てもらうと、バッテリー劣化は96%らしい。iPhone は設定から劣化状況が見れるけど、iPad はユーザに表示しないだけで裏では調査できるのね。というわけで、あんまりバッテリー劣化していない可能性も出てきて交換してもたいして変わらない可能性もあるので、一度クリーンな状態に戻して様子を見ようという話となった。特に問題なくバッテリー使えるようになると良いのだけど。

それはそうと、Apple のユーザサポート体験が非常に良かった。ちょっと前に同様の別の会社のチャットサポートを使ったら、そもそも人にたどり着くまでにテンプレ質問(FAQの的はずれな解答を提示してくる)を対話形式でこなした上、人にたどり着いたと思ったらレスポンスが非常に悪く、かつ日本語へは翻訳してやり取りしているようで的を得ない解答。これならメールのやりとりのほうが圧倒的に良いな、みたいな体験をしてしまったため、Appleの即人にたどり着いて、的確な解答をくれ、かつ押し付けがましくない提案をしてもらえる体験は最高であった。この体験にお金を払いたいぐらい(Appleの利益であるAppStoreの手数料やハードウェアが高い分、含まれるているのだろうけど)。


午後からはみるるで作業。学校が終わってない時間からもみるるで学習している学生が多く、11月末ぐらいだと受験勉強が主体の自主学習に切り替わったりしているのかなー。

撮影機材ricoh gr iiix

那須どうぶつ王国 / 2022年11月28日

O家のみなさんと、那須どうぶつ王国へ。客とどうぶつの柵がない場所も多く、その辺を鳥や動物、その他生き物たちが歩いていたりとめちゃ距離が近くて楽しい。どの場所も愛くるしい生き物たちが居てめちゃ楽しい場所だった。山に建っていることを利用したバードパフォーマンスは一見の価値有り。「どうぶつ王国」というだけあって、都市部郊外によくある動物園より圧倒的な良さがあった。


動物あんまり撮らないだろうなぁとライカMを持っていったが、わりと動物も撮って撮影が中途半端になってしまった。撮るなら撮るで当たり前だが望遠レンズ+コンティニュアスAFがある機種にすべきだし、ライカMならもっとスナップで切りとる写真に振れるべきであった。

また、一緒に行ったO家はスマフォで動画撮影を使いこなしており、動物を撮るなら静止画より動画だよ。そして静止画でも十分な画質な Pixel 7 Pro すごいなぁ。望遠もきちんと撮れるし。スマフォの静止画はまだまだ画像補正でいわゆる盛られた感じになると思っていたが、Pixel 7 Pro はパッと見補正がわからないぐらいの良さがあるなぁ。


家に帰ると連日の外出の疲れが出たのか、ちょい体調が悪くなってしまいそそくさと寝てしまった。楽しい一日だったなぁ。

撮影機材leica m11/Voigtlander NOKTON Vintage Line 50mm F1.5 Aspherical II VM SC

58ロハスマルシェ・佐久山温泉きみのゆ / 2022年11月27日

矢板市で開催される58ロハスマルシェが、今回はコーヒー飲み比べイベントと言う事で矢板へ向かう。矢板まではサクッと40分ほどなのだけど、駐車場が激混みで入場まで30分ぐらいかかり、自分が運転した中では一番の渋滞待ちをすることとなった。渋滞を見た時に、もしかしたら2時間ぐらいかかるのでは…と思っていたが、思ったよりは時間がかからなかったのは不幸中の幸い。

イベントはコーヒーだけでも20店舗以上、他にスイーツやその他様々な店も出ており、またドッグラン無料開放日ということで犬連れのお客も多かった。

コーヒー飲み比べは妻と自分二人分で、合計8杯頼みいろいろな味が楽しめた。焙煎方法や豆の種類、抽出方法によって全然風味が変わって面白いよなぁ。とりわけAIDIA COFFEEのブレンドコーヒーが美味しくて、豆をお土産に購入する。


帰り道に矢板の温泉、佐久山温泉きみのゆへ。サウナ・水風呂・外の休憩所が有りサウナ施設としても良い。中はミニ道の駅のような地場の野菜~お惣菜がところ狭しと売られていて、それらを買ったおじいさんおばあさんが食堂で楽しそうにコミニュケーションをとっていた。地域の憩いの場っぽいかんじでほっこりする。

撮影機材leica m11/summicron-m 1:2/35 asph.

那珂川の鮎もなか / 2022年11月25日

先日那須烏山市に行った時におみやげに買った、那珂川の鮎もなか。那珂川の鮎もなかはいろんなお店が出しているみたいだが、我々が買ったのはえちごや丸山菓子店のものらしい。たっぷりあんこが詰まっていて、アンコはだいぶしょっぱい味付け。鮎の塩焼きをイメージした味付けなのかもしれない。好みの味だった。

撮影機材ricoh gr iiix

2022年11月24日

夕方、那珂川河畔公園へ。最後の散りかけの紅葉をちょっと楽しみつつ、公園を一周散歩する。

撮影機材leica m11/Voigtlander NOKTON Vintage Line 50mm F1.5 Aspherical II VM SC

勤労に感謝 / 2022年11月23日

勤労感謝の日の祝日。だけどわりと仕事が溜まっていた(正確にはkaggleを優先して後回しにしていた…)ので、がっと片付ける。いつ労働しても良い、というのは気楽だよなぁ。勤労に感謝である。


映画パルプ・フィクションがブラックフライデーでHD画質購入700円というAmazon Prime Videoのセールに踊らされて買ってしまった。パルプ・フィクション、印象に残るシーンがいくつもあって、時たま見たくなるのだけど、見放題になっているタイミングが少ない。あと人生で3回は観るだろうから元は取れるだろう。たぶん。


結構本降りの日。妻を駅まで迎えに行ったのち、日乃屋カレー。ピーク時間帯以外にいつも行っているので、お客が毎度少なくて心配になる。余計なお世話である。

撮影機材ricoh gr iiix

腹の限界 / 2022年11月22日

妻が不在のため食生活が乱れ(居ると一緒の時間にお昼を食べるので)、昼どきを逃してかなりお腹が空いたので、ラーメンたかはしへ。まぜそばを食べる。ラーメンたかはしの大将のメニューには絶対の信頼をおいていて、どれを食べてもガツンとしたウマサでヤバいのだけど、初めて食べるまぜそばもご多分に漏れずウマい。

頼んだ麺の量250gは空腹時でも、完食後腹がはち切れんばかりなほど。となんとか食べきると大将が気を利かせてライスを出してくれて、残った汁と米を混ぜてオジヤにするとうまいよ~とサービスで出してもらう。断りきれず、ライスの量は減らしてもらいオジヤにして食べるとこれまたウマい。のだけどはち切れんばかりの腹に更に詰め込んだので、本当にもう全く何も入らない限界状態まで腹がふくれる。こんなつらい状態まで食べ物を詰め込んだの、大学の時に残すとペナルティのしゃぶしゃぶ食べ放題で頼みすぎて腹につめこんだ以来な気がする。

撮影機材RICOH GR III

2022年11月21日

取り組んでいるkaggleコンペの週次ミーティング。そういえば普通の仕事の定例系ミーティングでは大抵導入している「チェックイン・チェックアウト」をこのコンペのミーティングではやっていなかったなぁ、とやってみたら良い感じ。とりわけボイスチャット定例は本題のみの話で終わりがちだからなぁ。もっと早くからやるべきだった。

kaggleコンペも締め切りまであと一週間ちょっとで佳境。がんばっていきたい。


チェックインで話した会話で、たまたま先週末土日でアニメのサマータイムレンダを一気見してしまった、という話題が出て、自分もちょうどこの日に見し終わったのであった。Netflixで先週から配信が始まったから、一気見タイミングが重なったりして面白かった。

サマータイムレンダは漫画で読んだのだけど、読了後から時間が立ってストーリーがうろ覚えになっていたので、アニメを割りと新鮮な気持ちで見れてよかった。25話もあるので1.5倍速で見たのだけど、特に問題なく見れたので、長いシーズンを見るのに1.5倍速は全然アリだな。

散髪・喫茶新川屋・本当の自分とつながる瞑想 / 2022年11月20日

そろそろ髪を乾かすのに時間がかかるな、と思えるようになってきたので散髪へ。二ヶ月ぶりぐらい、と思ったら店員曰く一ヶ月ちょいぶりほどだったようだ。


夕方は喫茶新川屋へ。ランチタイムは混雑しているのだけど、夕方は今まで行って入れなかったことがなかったので、ぶらり行ける安心感がある。新川屋の夕方は、JBLのスピーカーから大音量でレコードがかかっているのだけど、広い空間にスピーカーというのは良いというのを改めて感じる。一時期オーディオオタクだったので、オーディオに必要なのは大音量で音楽をかけられる空間なのだよなぁ。家を建てるとき、予算をかけるなら広さよりもデザインと思っていたのだけど、ズドーンと大きな仕事場やリビングというのも良いよなぁ。


きちんと瞑想のやり方を知りたい気持ちが芽生え、そういえばK氏が瞑想の実践本をたくさん読んでいたなと紹介されていた書籍、本当の自分とつながる瞑想を読む。前半は作者の仏教的視点からのマインドフルネスでさらっと読んで、後半は具体的なやり方がしっかりとのっていて、早速やっていきたい。呼吸を意識するなど、ちょっとやってみるとたしかになぁ。電子書籍で購入したのだけど、やり方のページを開いて、がやりにくいので書籍で買うべきであった。本当は動画であると良いのだけど。


その後は芦野温泉へ。雨の日曜夜だけあって、今までで一番混んでいた感じだ。賑わいがあって良い。温泉やサウナで瞑想だと思っていたものは、ただ日々の考える場所が異なる場所になっていただけで、全然瞑想になっていなかったということがわかった。

撮影機材ricoh gr iiix