usakdsteen

ゆうさくですてぃーん

Tシャツ貰えることが確定した件

Yandex.Algorithm 2018 の ML track という24日間の機械学習コンテストに参加したのですが

順位が128位以内の人はTシャツが貰えるコンテストでして、見事109位になりTシャツを貰えることになりました!

(※実際は多くの参加者がやる気無かったらしく実質参加賞みたいな感じでのゲットではある)

Standings — ML track — Algorithm 2018

 

 

 

コンテストで出題された問題の内容は

AliceとかいうYandexが運営してるらしい会話AI(?)とUser(?)との短い会話が与えられるので用意された複数のAlice返事候補を良さそうな返事順に並べろって感じ

 

会話は最大3センテンスで

Userの発話、Aliceの返事、そこにさらにUserの発話

という3つで

この3つで話の流れ(文脈)が発生するのでそこから予想されるAliceの良い返事とはどれかを考えるみたいな?

(はじめの2つのが無くて文脈がないテストケースもあった)

※なお、この会話はロシア語である…

 

コンテスト参加者には

教師データ(train.tsv)

仮テストデータ(public.tsv)

最終テストデータ(final.tsv)

のタブ区切りファイルが与えられるのだけど

final.tsvだけはコンテスト最終日の数日前くらいに配布されててそれに気づかない人たちが最終テストに落ちてた

その数日前までの順位はpublic.tsvを用いた結果の成績で順位付けされていて、public.tsvはfinal.tsvのサブセットになっていた

 

会話データはロシア語ではあったが、単語や記号ごとに半角スペース区切りになっていたので、謎の親切設計にはなっていた(?)

 

各ファイルには

会話データと返事候補が載っているわけだが

学習用の教師データ(train.tsv)には

当然ならがら返事候補の評価のデータも含まれていて

その評価はgood, neutral, badの英単語表記の評価で、それに加えてその評価の信用率(信頼率?)も存在してた

 

このコンテストは、Yandex.Algorithmの他のコンテストと違って、コンテスト中の参加者同士での情報交換が許されてはいた

のだけど、用意されていたチャットルームがロシア語のだったので、それには参加しなかった

 

それと問題文のページにデータファイルのほかに

この機械学習コンテストで使える資料やライブラリやAlice関連の資料などがあったのだが

それらには結局は手をつけなかった

 

参加にあたった当初の予定では

コンテスト早期に思いついてた謎アイデアを試したあと

機械学習について勉強して勉強の成果を試す

ってのをやろうと思ってたのだけど

結局はコンテスト最終日数日前まで何もせず

その最終日前の数日に謎アイデアを実装して提出するだけで終わってしまった

機械学習について学ぶことに失敗したのだった

 

 

さて、謎アイデアについてだが

日本語だと漢字や仮名など文字種が大量にあるが

入力されるのはロシア語で、文字種はそんなに無いだろうと思い

また、会話に使用される文字と内容には何らかの相関があるんじゃないかと勝手に決め付けた感じで

全ケースの会話と返事のそれぞれに使用される文字をまとめて、文字と文字を対応させて数値を割り振り表を作り

個別のケースに使用される文字にその数値の合計を足してそのケースの評価値として使うみたいな感じで

そんでもって表の数値をいくつかランダムに選んでそれぞれランダムに変化させたものを教師データに対して評価値を計算し、結果がよくなるようならそのランダム変化を採用して表に反映し、悪くなるようなら元の表に戻す、という感じで機械学習っぽいことをやった

f:id:neetsdkasu:20180523070945p:plain

f:id:neetsdkasu:20180523071004p:plain

 

コンテスト最終日直前に実装を始めたもんだから

学習ぽいこと2日間でたいした時間を割り当てられなかったので、そこが多少残念だった

少し学習させるごとにサブミットして暫定順位のスコアを眺めてて学習のたびに改善してたので

もっと早くから取り掛かっていればもっとよいスコアが出ていたのかもしれない

 

 

 

なお、

Yandex.Algorithm 2018には

Optimization trackというマラソンマッチ風なコンテストも開催されていて

Optimization trackは2つのコンテストが開催されていて

(一方だけ参加もOKな)総合順位が上位128位以内だとTシャツが貰えるということで参加したのだが、150位とまったく届かない結果になった

Optimization track — Algorithm 2018

 

opt1のコンテスト問題はタクシーが客拾って近くの遊び場に連れて行くみたいな感じで

opt2のコンテスト問題はネットワーク上のニュースをボットが拾い集める、という感じ

タクシーやボットの動きを最適化しろってお題で、めっちゃ難しかった

 

 

 

 

 Yandex.Algorithmの関連告知はCodeforcesで行われてるのがあってそこに少し情報があった

Yandex.Algorithm ML track started - Codeforces

Yandex.Algorithm — Optimization track, round 1 - Codeforces

Second round of the Yandex.Algorithm Optimization track has been started! - Codeforces

 

なんでか知らんけど

これらの記事でリンクされてる

https://contest.yandex.com/algorithm2018/

の「.com」ドメインのリンクにはコンテスト後にアクセスできなくなってて

https://contest.yandex.ru/algorithm2018/

の「.ru」ドメインにアクセスしないと繋がらなくなってた

(現在は「.com」のほうにも繋がるみたいだけど)