第1回Cpaw AI Competitionを開催しました
こんにちは@shunk031です。昨日読んだ論文はDeconvolutional Paragraph Representation Learningです。
台風22号が猛威を振るった10/29に、Cpaw*1主催、全脳アーキテクチャ若手の会*2共催の「第1回Cpaw AI Competition」のお手伝いをしてきました。
Cpaw AI Competitionの概要
複数のデータセットを用いて、競技時間内に一定以上の精度が出るような識別器を作成し、機械学習技術を競う大会になっています。識別器を作成するための計算リソースは、さくらインターネット様からご提供の「さくらのクラウド」を利用することができます。
GPUマシンではないのですが、かなりパワーのある「さくらのクラウド」マシンを利用することができ、さまざまなモデルを試せる環境を用意していただきました。ありがとうございます。
運営のお手伝いとして参加
Cpaw代表の@porisuteruとは研究室の同期で、大会を開催するにあたって運営のお手伝いを任されていました。
今回お手伝いをしたのは競技の作問とデータセットの作成周りでした。そもそもCpawはCpaw CTFやCpaw CTF2など、セキュリティを中心に活動している組織です。そこで「セキュリティ×機械学習」でうまいデータセットがないかなと考えて、データセットを作成させていただきました。
Cpaw AI competition 始まりました! #cpawAI pic.twitter.com/G8EgRy57uy
— Cpaw (@Cpaw_account) 2017年10月29日
そこで今回、以下のデータセットを使って競技を行っていただきました。
- Classic Characters
- Entertainer Blog
- Fashion MNIST with checkerboard
- Fashion MNISTデータセットにチェッカー柄を追加したもの
- T-shirt、Trouserなどの各10クラス分類
- Malware Analysis
- マルウエアから抽出したjson形式の特徴量
- 「APT1」、「Crypto」、「Locker」、「Zeus」の4クラス分類
- Malware URLs
- 通常のURLと悪意のあるURLのデータ
- 「Normal」および「Malicious」の2クラス分類
ベーシックな画像処理や自然言語処理、そしてセキュリティ領域での機械学習適用を考えたデータセットになっていると思います。
Classic Charactersは人文学オープンデータ共同利用センターが公開している「日本古典籍字形データセット」をベースに作成しています。「あ」〜「ん」までの各ひらがな画像が含まれており、また厄介なことにさまざまなアスペクト比の画像が含まれています。この点をどのように工夫するかが精度向上のポイントとなってくると思います。
Entertainer BlogはLINE Blogからクローリングしてきた芸能人のブログ記事を使っています。クローリングはScrapyをベースに作った拙作shunk031/LINEBlogScraperを利用しています。各人とても個性のある記事を作成しているため、たくさんの特徴があると考えています。
Fashion MNIST with checkerboardは、Fahion MNISTにチェッカー柄を追加したものとなっています。これはFashion MNISTの学習済みCNN*4が存在するため、少し強めのノイズとしてチェッカー柄を追加しました。
Malware AnalysisおよびMalware URLsはセキュリティ分野を意識したデータセットになっています。通常のソフトウェアとマルウェアのそれぞれの特徴を抽出したjsonファイルや、正常および悪意のあるURLを分類するものになっています。ドメイン知識があるとより精度が出そうなデータです。
競技は5時間ぶっ通しで行わせていただきまして、各々真剣に取り組んでいる様子が見て取れました。
#CpawAI 残り1時間です!Kaggle masterさんたちがどんどんスコアを上げています😂😂😂 pic.twitter.com/6SBxMEfaEI
— しゅんけー (@shunk031) 2017年10月29日
スコアサーバー等に少し不具合があったのですが、トラコン運営の@porisuteruがリアルタイムでデバッグしていました汗
最終結果は…!
少しドタバタしたのですが、最終的に今大会のWinnerはKaggle Grandmasterの@smlyさんでした! おめでとうございます!商品は最近話題のGoogle Home miniを贈呈させていただきました。
got 1st prize 🏆 #cpawAI
— Standard ML/Yeah! (@smly) 2017年10月29日
Twitterにて解法を共有されていらっしゃったので、掲載させていただきます。
cpawAI は画像も自然言語も全部特徴量抽出 + Logistic regression でした.PyTorch と XGboost のセットアップに失敗してしまい時間制限も厳しかったので、ひたすらデータ見て特徴探してました.
— Standard ML/Yeah! (@smly) 2017年10月29日
各データセットの特徴を捉えてロジスティック回帰で分類というシンプルながら最強感あるモデルで優勝された模様です。
またKaggle masterである@threecourseさんはXGBoostを用いたモデルで2位に入られました。
解法:[character]28x28にresizeしてxgboost。本当は二値化とかしたほうが良いのだけど、そこまでは手が回らない [fashion]:読み込んでxgboost #cpawAI
— threecourse (@threecourse) 2017年10月29日
[malware]:labelに答えが書いているので、そのまま書き出すと100% [malware_URL]:アルファベットの数を特徴量にしてxgboost [blog]:いくつかの言葉の数を特徴量にしてxgboost #cpawAI
— threecourse (@threecourse) 2017年10月29日
これは僕のデータセット作成ミスなのですが、特徴量の中に正解ラベルが混入していたようです…。お試し精度100%問題になってしまっていたようです。
懇親会とこれから
競技終了後はピザを囲みながら解法などの情報交換が活発になされていました。競技要素ある機械学習コンペを開催するのは当方初めてでありまして、たくさんのフィードバックをいただくことができました。
これらのフィードバックを元に今後開催予定の機械学習コンペを作っていきたいと考えています。今回のCpaw AI Competitionに参加された皆様にはとても感謝しています。ありがとうございました!
*1:Cpaw | Caramel Programing Affect the World https://www.cpaw.site/
*2:全脳アーキテクチャ若手の会 https://wbawakate.jp/
*3:『日本古典籍字形データセット』(国文研ほか所蔵/CODH加工)提供:人文学オープンデータ共同利用センター | http://codh.rois.ac.jp/
*4:Convolutional Neural Networks