May the Neural Networks be with you

ニューラルネットワークと共にあらんことを

2018年の目標

明けましておめでとうございます。@shunk031です。CNN Is All I Need*1という気持ちで新年を迎えました。

前記事で2017年をざっくりと振り返りました。

shunk031.hatenablog.com

2018年を迎えるにあたって今年1年の目標を宣言してみようと思います。

2018年の目標

  • 新大学院生として、大学院生生活に慣れる
    • 人間として精神を保ち、確固たる確信を持って生活する
    • (結構難しそう)
  • 毎月10〜20本程度は論文を読んで落合先生フォーマットでまとめる
    • shunk031/paper-survey に引き続きまとめていくスタイルでやっていきたい
    • (いい感じにjekyllのページテンプレートを改築したい)
  • 新しい言語を習得する
    • Golang (よさそう)
      • 雰囲気的によさそう
      • pythonで書いたお手製CLIとかをGolangで書ければ嬉しいのかも
    • Javascript (なんだかんだ使いそう)
      • D3jsをいい感じに使いたい
      • スクレイピングのときにゴニョゴニョしたいので読めると嬉しい
      • なんだかんだWeb界隈はJavascript
    • Cython
      • 秘伝のPythonコードを高速にしたい
      • 最後の砦感ある
    • PyTorch
      • フレームワークじゃん
      • PyTorch実装ならもうどこにでもあるから使えるようにしたい
  • ブロックチェーン周りの勉強
    • 一般教養になりそうな雰囲気がある
  • インターンを通して社会実装へチャレンジ
    • 自分が研究している自然言語処理や画像認識をどう社会へ適用するかを考え、手を動かす
    • 自分のスキルがどう使えるのか、どういうスキルが必要になるのかを学ぶ
    • 綺麗なコードを書く。しゅっっとしたいい感じのコードを書く
  • 継続的に勉強会に参加して知り合いを増やしたい
    • あわよくば発表とかできたらなお良い
  • 継続的に学会に参加して知り合いを増やしたい
    • YANSは楽しかったのでまた参加したい
    • 国際学会に通すという強い意志
  • 機械学習コンペを継続的にやっていく
    • Kaggleを中心にワンチャンでオプトDeepAnalyticsをやっていきたい
  • 真剣に恋活および婚活を進める
    • 月1で合コン / 街コンに強い意志で参戦する
    • ニューラルネットと恋人にはなれない
    • このままだと「彼女を生成するッ!!」とか言ってGANとかEncoder-Decoderとかで作り始めてしまう危険性がある
    • ふとした時に無になってしまうので心の拠り所が欲しい

ぱっと浮かんだのがこんな感じです。曖昧なものも多く評価が難しそうです。最後はかなりガチですが、目標を立てたのでやっていきます!

進捗が悪そうな場合はTwitterとかで言ってもらえると頑張れると思います。よろしくお願いします!

*1:[1712.09662v1] CNN Is All You Need https://arxiv.org/abs/1712.09662v1

2017年の振り返り

こんにちは。@shunk031です。クリスマスにニューラルネットワーク"力"をお願いしましたが、何も貰えませんでした。サンタさんはHinton先生ではないみたいです。

驚くべきことに2017年も今日で終わりみたいです。この1年何をやってきたか振り返りも兼ねて、思い出せるイベントについて軽く残しておこうと思います。

研究について

YANS

夏にNLP若手の会 (YANS) 第12回シンポジウムにポスター発表で参加しました。

yans.anlp.jp

はじめての学会発表でなおかつ1人参戦だったのですが、バイト先の方が何人もいてくださったのもあってか、有意義な時間を過ごせました。

前泊

前泊で沖縄に乗り込み、地元のタクシーのおじさんに格安で沖縄を案内してもらいました!

1日目

1日目の始まりはこんな感じです(わからん)

懇親会では舞が披露されたりしてとても豪華でした。

2日目

2日目は海の方でバーベキューランチでした。豪華

3日目

発表しました!つかれました。

無我夢中で説明してました。とてもつかれました。

帰ります。

正直学会とは思えないほど豪華で、沖縄をとても満喫しました!

宿泊したホテルがとても豪華で、スポンサー様方にはこの場をお借りして感謝の気持ちを伝えたいと思います。

インターンについて

VALUENEX

2016年の2月あたりからVALUENEXでデータの前処理だったりクローラーを書くアルバイトをしていました。 今Pythonであれこれできるのもこのバイトのおかげです。現在はリモートでちょいちょいお世話になっています。

Gunosy

Twitterを見ていたらこんなツイートが流れてきました。

私が探していたのはこういう環境です。ということで現在バイトさせていただいています。 今年1年Gunosyでバイトを始めて、とても成長できたと実感しています。

NVIDIA

NVIDIA主催のGTC JapanのハンズオントレーニングのTAをやりました。

shunk031.hatenablog.com

文化祭について

文化祭でこういうデモを用意しました。

github.com

藤田ニコルちゃんと水原希子ちゃんのインスタからデータを取ってきてモデルを学習させ、受け取った入力がどっちに似ているかを示すデモです。

LinearSVMに対してLIME*1を用いてモデルの予測結果を可視化する手法です。 LIMEについての詳しい解説は以下のブログを参考にしていただきたいです。

pesuchin.hatenablog.com

JKウケを狙って藤田ニコルちゃん水原希子ちゃんを選んだんですが、アンケート調査を見た感じかなり良い評価だったみたいです。

OSSコントリビュートについて

Google TrendPythonから簡単に扱えるGeneralMills/pytrendsが日本語に対応していないようだったのでプルリクを出したところ秒速でマージされました。びっくりしました。

github.com

スター数500超えのレポジトリにコントリビュートできたのは嬉しかったです。 github.com

機械学習コンペ

Deep Analytics

「第1回 FR FRONTIER :ファッション画像における洋服の「色」分類」というものに参加して学生特別賞をいただきました。

deepanalytics.jp

賞金と賞状もいただきました。ありがとうございます!

Kaggle

メルカリがkaggleでコンペをやるというので初参戦してみました。

https://www.kaggle.com/c/mercari-price-suggestion-challenge

年末すべてこれに溶かしてるですが、全く進捗ありません。

Cpaw AI competition

Kaggleのように精度を競う機械学習コンペティションを主催しました。

shunk031.hatenablog.com

Kaggle MasterさんやGrandmasterさんも参加していただき、とても盛り上がりました。

まとめ

全力で駆け抜けた1年でした。来年は大学院1年生なので研究周りでもう少し頑張っていきたいと思います。

*1:[1602.04938] "Why Should I Trust You?": Explaining the Predictions of Any Classifier https://arxiv.org/abs/1602.04938

謎のAI企業(NVIDIA)主催「GTC Japan 2017」のハンズオンTAをやってきた

こんにちは@shunk031です。最近とても寒いのでDGX Stationで暖をとっています。

12月12日〜13日にかけて、ヒルトン東京お台場で開催されたGTC Japan 2017のハンズオントレーニングTAとして参加してきました。

そもそもGTC Japanとは何なのか、ハンズオントレーニングではどのようなことが習得できるのか、ざっくりとまとめていきたいと思います。

目次

GTC Japanとは

「GTC Japanは、NVIDIA が主催する日本最大の GPU テクノロジ イベントです。GTC と Global GTC は、AI (人工知能)、ディープラーニング、医療、VR (バーチャル リアリティ)、活用分析、自動運転車など、コンピューティング分野で最重要でかつ、不可欠とされる貴重なトレーニングとショーケースを提供します」とのことです。謎のAI企業であるNVIDIAが年に1回開催する大きなイベントで、革ジャンCEOとして有名なJensen Huangも来日して基調講演をします。

開催された場所は昨年と同様、港区のヒルトン東京お台場です。駅直結のホテルで、とてつもない高級さを感じます。

Deep Learning Institute (DLI)

今回お手伝いさせていただいたのはこちらです。ディープラーニングのハンズオントレーニングとなっておりまして、「困難な問題解決をAIとディープラーニングで支援する」というミッションになっています。

今回のハンズオンではQwiklabsというe-learningサービスを利用した、クラウドベースのハンズオンとなっています。ハンズオンの参加者の皆さんにPCを持参していただき、AWSGPUインスタンス上のJupyter Notebookを使ってラボを進める形式になっています。

実施されたラボ

今回は過去最大の9つのラボが実施されました。

  • NVIDIA DIGITSによる物体検出
  • NVIDIA DIGITSによる画像セグメンテーション
  • Kerasを使ったRNNによる時系列データモデリング
  • Tensorflow、MXNet、NVIDIA Dockerを使ったディープラーニングのワークフロー
  • 敵対的生成ネットワーク(GAN)による画像編集
  • ChainerRLによる深層強化学習
  • Building Autonomous Vehicle with DRIVE PX2 and DRIVEWORKS
  • Autonomous Driving with Autoware on DRIVE PX2
  • 画像セグメンテーションネットワークの車載向け最適化

各ラボではJupyter Notebookに加えて、NVIDIAOSSとして公開しているDIGITSを利用します。

github.com

DIGISTではWebブラウザ上のGUIベースでデータセットの読み込みからモデルの構築・学習・テストができるアプリケーションになっています。主な特徴は以下のものが挙げられます。

  • CaffeやTorch、Tensorflowを使用した画像分類・セグメンテーション・オブジェクトディテクション等のタスクに対するDeep Neural Network設計および学習・ビジュアライゼーション
  • DIGITS Model StoreからAlexNetやGoogleNet、LeNet、UNETといったプレトレーニングモデルのダウンロードと読み込み
  • 学習率やバッチサイズを柔軟に変化させて、モデルの精度を改善できるフロー
  • モデルのトレーニングジョブのスケジューリングを行い、リアルタイムでモデルの精度やlossを確認することができる
  • DIGITSのプラグインを用いて様々な形式の画像をインポート可能
  • マルチGPUに対して自動的にスケール

DIGITSについてより詳しい説明は以下を参照してください。

NVIDIA DIGITS | NVIDIA Developer

お手伝いさせていただいたハンズオン+αについて

今回私は「NVIDIA DIGITSによる物体検出」と「画像セグメンテーションネットワークの車載向け最適化」のTAとして、ハンズオンのお手伝いをさせていただきました。

NVIDIA DIGITSによる物体検出

NVIDIA DIGITS を利用して、海洋の画像データから鯨を検出するというタスクに挑戦します。いくつかの検出方法を試し、精度を高めていくものとなっています。

典型的なスライディングウインドウを用いた検出から、Yolo*1をベースとしたDetectNet*2を用いた鯨の検出までをハンズオンで学習していただきました。スムーズに最新のオブジェクト検出のアルゴリズムを大変できるラボになっていて、私自身も勉強になりました。

画像セグメンテーションネットワークの車載向け最適化

自動運転では車載カメラから得られる画像に対して、どこに何があるのかを高速に識別することが必要です。このラボでは、画素単位でラベル付けを行うセマンティックセグメンテーションの DNN を作成する方法から、車載画像に対して適用するまでを学んでいただきました。

NVIDIAブースの展示

今回のGTC Japanでは、NVIDIAから3つほどブースで展示がありまして、そちらのお手伝いもさせていただきました。

リアルタイム画風変換は以下のような感じで変換してくれました。自分自身がTesla V100 4枚を通って変換されているのを見て興奮してしまいました

こちらはナチュラルに展示されていたDGX-1です。「AI研究の必需品」と書かれているように、とてもパワーのあるマシンです。研究室にぜひ欲しいです!

まとめ

今回25人のTAがハンズオントレーニングのアシスタントをさせていただきました。

f:id:shunk031:20171214211218j:plain

ハンズオントレーニングを通して、参加者のみなさんのアシストをするとともに、私自身も勉強になる所が多かったです。GTC Japan全体でも大盛況で謎のAI企業に対する注目度も上がっているのかなと感じました。

最後にブログ内容をチェックしてくださった@_ksasakiさん、ありがとうございました!

余談

NVIDIAの自動運転車として有名なBB8くんと写真が取れました!

可愛いお姉さんとヒーローとも写真撮れました!TAやっててよかったです!

NIPS2017 気になった論文10本まとめてみる

こんにちは@shunk031です。好きな食べ物はニューラルネットワークです。 Advent Calendarの季節に乗じてブログを更新してみようと思います。

機械学習のトップカンファレンスであるNIPS2017が12月4日から9日にかけてアメリカのロングビーチにて行われます。先日NIPS2017のProceedingsが公開され、Acceptされた論文が読めるようになっています。

今回個人的に気になった論文10本について、ざっくりとした内容を載せたいと思います。Acceptされた多数の論文の中で詳細に読むものを選ぶ基準として使ってもらえたりしたら幸いです。

目次

Regularizing Deep Neural Networks by Noise: Its Interpretation and Optimization

  • Hyeonwoo Noh, Tackgeun You, Jonghwan Mun, Bohyung Han (Poster)

f:id:shunk031:20171202182530p:plain

過学習はDeep neural networkの学習における課題の1つであり、汎化性能を向上させるためにさまざまな正則化手法が提案されてきた。中でも学習中にHidden unitに対してノイズを乗せるDropoutは有名な正則化手法として知られているが、こうした正則化手法がなぜ効果があるのかは不明である。

本研究では従来のノイズ付加による正則化手法が真の目的関数の下限に対して最適化すること、Stochastic gradient descentにおいて、より制約の強い下限にフィットするよう複数のノイズを導入する手法を提案している。CIFAR10等のデータセットを用いて提案手法の効果を確かめている。

DropoutNet: Addressing Cold Start in Recommender Systems

  • Maksims Volkovs, Guangwei Yu, Tomi Poutanen (Poster)

f:id:shunk031:20171202182614p:plain

潜在的な意味を捉えるモデルは、精度の良さやスケーラビリティを有するため、レコメンドシステムを導入する際にデフォルトの選択肢の1つとなっている。しかしながらレコメンドといった分野の先行研究では、主にユーザーとアイテムの関係をモデル化したものが多く、データが少ない場合に起こる「コールドスタート問題」に対する解決策を提示しているモデルは少ない。Deep learningは近年様々な入力に対して優れた成功を収めている。そういったモデルを利用し、レコメンドシステムにおけるコールドスタート問題を解決するため、ニューラルネットワークベースのDropoutNetを提案している。

コンテンツベースの目的関数を追加した既存の手法と異なり、本研究では最適化手法に焦点を当てたのと、Dropoutを応用して明示的にコールドスタートに対してモデルのトレーニングを行う方法を示している。提案モデルは既存のモデルに対して適用することができ、コールドスタートに対して効果を発揮している。コールドスタート問題を解決しているかを評価できるCiteULikeデータセットACM RecSys 2017 challengeデータセットを用いて、提案モデルが優れた結果を出していることを確認している。

Sparse Embedded k-Means Clustering

  • Weiwei Liu, Xiaobo Shen, Ivor Tsang (Poster)

f:id:shunk031:20171202182731p:plain

K-meansクラスタリングは広く知られている素晴らしいアルゴリズムであるが、高次元のデータに対しては、計算コストの高さゆえに様々な分野への応用を妨げている現状がある。一般的には次元削減の手法を用いて対処することが多いが、近年Random projection(RP)などの手法を用いて高速なK-meansクラスタリングを実現することができる。しかしながらこの手法は他の次元削減手法よりも多くの改善点が存在している。例として特異値分解(SVD)に基づく特徴抽出手法と比較して、RPは近似を行いつつ、データ数nで特徴数dのデータX \in \mathbb{R}^{n \times d}に対してmin\{n,d\} \epsilon^{2} \log{(d)} / k だけ実行時間を削減している。

これらの改善を経てもなお行列の乗算には\mathcal{O} \left( \frac{ndk}{\epsilon^{2} \log{(d)}} \right)だけ必要であり、特にデータ数nや特徴数dが大きい場合にはとても大きな計算コストとなってしまう。これらのボトルネックを解消するため、本研究では\mathcal{O}(nnz(X)) (nnz(X)X内における非ゼロの数を表している)を必要とする高速な行列の乗算を行う枠組みを用いて、スパースな埋め込み表現に対してK-meansクラスタリングを行う手法を提案している。また本研究ではRPの近似精度についても改善を行っている。ILSVRC2012等のデータセットに対して従来の次元削減手法を次元を落としてからK-meansクラスタリングをした結果と、提案手法の高速な次元圧縮を利用したクラスタリング結果を比較している。

SVD-Softmax: Fast Softmax Approximation on Large Vocabulary Neural Networks

  • Kyuhong Shim, Minjae Lee, Iksoo Choi, Yoonho Boo, Wonyong Sung (Poster)

f:id:shunk031:20171202182837p:plain

本研究では特異値分解を利用した、とても大きいボキャブラリを持つSoftmax関数を高速に近似する手法を提案している。SVD-Softmaxはニューラル言語モデルの推論時に最上位となりうる単語について、高速かつ正確に確率推定を行うことを目的としている。提案手法ではSVDを使って出力ベクトルの計算に用いた重み行列を変換する。各単語の近似確率については、いくつかの大きな特異値を使用することで単語の大部分の性質を持たせることができ、これを利用して重み行列を推定できると主張している。

本研究の手法を言語モデリングとニューラル機械翻訳に適用することで、提案手法で導入されている近似手法が効果を発揮していることを検証している。本アルゴリズムでは800,000個の語彙の場合においても、約20%程度の算術演算しか必要とせず、GPUを利用することで3倍以上スピードアップしていることが分かっている。

Few-Shot Adversarial Domain Adaptation

  • Eleni Triantafillou, Richard Zemel, Raquel Urtasun (Poster)

f:id:shunk031:20171202182940p:plain

本研究ではDeepモデルを用いた教師ありのドメイン適応の問題に対して対処するフレームワークを提案している。主なアイディアは埋め込み表現を学習する際にAdversarialな学習を導入し、2つの異なるドメインの特徴を保持するように埋め込みつつ、同時に埋め込み表現が意味をなすように配置させるところである。教師ありタスクの場合、一般的には大量のラベル付与済みデータが必要であるが、ラベルを付与すべきデータが少なく済むことでより扱いやすい問題となる。こういったFew-shotな学習の場合にデータ欠損があると、埋め込み空間に対して埋め込み表現の配置と分離というのは困難を極める。

提案モデルでは典型的な2値のAdversarial discriminatorが4つの異なるクラスを分離するためにData augmentationに工夫することで、教師ありのドメイン適応問題対して有効であることを見つけている。加えて本手法ではラベル付与済みデータがとても少ない場合、特にカテゴリあたり1サンプルであったとしても高速に適応できていることが示されている。MNISTやSVHNデータセット等を用いて本手法のドメイン適応の効果を確認している。

Dilated Recurrent Neural Networks

  • Shiyu Chang, Yang Zhang, Wei Han, Mo Yu, Xiaoxiao Guo, Wei Tan, Xiaodong Cui, Michael Witbrock, Mark A. Hasegawa-Johnson, Thomas S. Huang (Poster)

f:id:shunk031:20171202183116p:plain

長い文章等に対してRNNを学習させることはとても難しい問題となっている。特に複雑な依存関係、勾配消失/爆発問題、並列化が難しい点が挙げられている。本研究ではシンプルで効率的なRNNのアーキテクチャであるDilatedRNNを提案している。本アーキテクチャは複数のDilated recurrent skip connectionを組み合わせており、さまざまなRNNセルとフレキシブルに組み合わせることができる。またDilatedRNNは必要なパラメータ数を減らしつつ学習効率を大幅に向上させることができ、とても長いスパンで依存性のあるデータやタスクで優れたパフォーマンスを発揮している。

提案モデルの利点を理論的に定量化するため、Memory capacity measureを導入している。これは長いスキップコネクションを持つRNNに対して既存の指標よりも適していることが示されており、LSTMなど他のRNNアーキテクチャのMemory capacity measureを比較することでDilatedRNNが優れていること証明している。

Deep Subspace Clustering Networks

  • Pan Ji, Tong Zhang, Hongdong Li, Mathieu Salzmann, Ian Reid (Poster)

f:id:shunk031:20171202183236p:plain

本研究では教師なしサブスペースクラスタリングのためのDeep neural networkアーキテクチャを提案している。本アーキテクチャは入力データを潜在空間に非線形写像するDeep auto-encoderをベースとしている。本研究での重要なポイントとして、従来のサブスペースクラスタリングで効果的であると証明されている「Self-expressiveness」という特性を模倣するため、EncoderとDecoderとの間に新しくSelf expressiveレイヤーを導入している点が挙げられる。

本研究で導入されたSelf expressiveレイヤーは、一般的なBackpropagationを通じてすべてのデータ点間の類似性をシンプルかつ効果的に学習するものとなっている。またこのレイヤーは非線形であるため、本研究のアーキテクチャは複雑な構造を持つデータ点を容易にクラスタリングできる。加えて、Subspace clutering networkのパラメータを効率的に学習させるためのPre-trainingとFine-tuningを提案している。Subspace clustering networkが先行研究の教師なしサブスペースクラスタリング手法よりも遥かに優れていることを示している。

Variable Importance Using Decision Trees

  • Jalil Kazemitabar, Arash Amini, Adam Bloniarz, Ameet S. Talwalkar (Poster)

f:id:shunk031:20171202184051p:plain

決定木とランダムフォレストは優れたパフォーマンスと示すだけでなく、Feature importanceといった情報が分かる、確立されたモデルである。 不純度ベースで変数の重要度を知ることができるため使われることが多いモデルであるが、これらの重要度は理論的に不明な点が多い。

本研究ではDSTUMPを提案し、様々な仮定におけるモデリングの下で高次元のデータ利用で有限のサンプルパフォーマンス保証性を導き出すことによって、ツリー系のモデルの性能についての考察を行っている。またこれら不純度ベースの手法の有効性について、広範囲の実験を下に有効性を実証している。

Deanonymization in the Bitcoin P2P Network

  • Giulia Fanti, Pramod Viswanath (Poster)

ビットコインにおけるP2Pネットワークに対する近年の攻撃では、ネットワーク一貫性を確保するために使用されるTransaction-floodingプロトコルを悪用することによって、ユーザの匿名性を奪うことがが可能となってしまっていた。2015年にビットコインコミュニティでは、このプロトコルをDiffusionと呼ばれるプロトコルに変更することで、こうした攻撃に対応した。

しかしながらこのDiffusionプロトコルが実際にシステムに対して匿名性を向上させるかどうかは明確には分かっていない。本論文ではビットコインのネットワークをモデル化し、2015年前後の匿名性について分析を行っている。中心となる問題はグラフ上での流行源の推論/特定の1つとなっている。観測モデルと拡散メカニズムについてはビットコインの実装から分かるが、注目すべきはこうしたモデルは先行研究で研究されていない点である。本研究では最適な流行源推定量を特定し、分析する内容となっている。

分析結果として、2015年前後のビットコインネットワークプロトコルは通常のネットワーク上で脆弱な匿名性を提供していたことが判明している。実際に2015年のビットコインP2Pネットワークのスナップショットでシュミレーションを行い、本研究での主張を確認している。

Unsupervised Learning of Disentangled and Interpretable Representations from Sequential Data

  • Wei-Ning Hsu, Yu Zhang, James Glass (Poster)

f:id:shunk031:20171202183852p:plain

本研究では教師なしの連続データに対して解釈可能な表現を学習するFactrized hierarchical variational autoencoderを提案している。具体的には潜在変数のことなるデータに対し、事前確率としてSequence-dependent priorsとSequence-independent priorsをFactorized hierarchical graphical model内で組み合わせることで、連続データが持つマルチスケールな情報を利用するモデルとなっている。

本モデルは2つの音声コーパスTIMITとAurora-4を用いて評価を行っている。具体的には異なる潜在変数の組を使って、スピーカーや言語コンテンツを変換する能力を定性的に評価している。

まとめ

NIPS2017の論文について概要を見ていきました。この他にも多数の論文がAcceptされています。同じく機械学習のトップカンファレンスであるICMLと、今回のNIPSでAcceptされた論文の総数が1113本あるようです。*1

この他にも私自身が読んだ論文を以下のレポジトリでまとめていたりします。よろしければスター等つけていただけると励みになります。

年末までに1日40本程度読めばすべて読めるらしいので、ぜひ読破して教えていただきたいです!

第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 CTFCpaw CTF2など、セキュリティを中心に活動している組織です。そこで「セキュリティ×機械学習」でうまいデータセットがないかなと考えて、データセットを作成させていただきました。

そこで今回、以下のデータセットを使って競技を行っていただきました。

  • Classic Characters
    • ひらがなのくずし(古典)文字*3
    • 「あ」〜「ん」の各ひらがな画像を用いた50クラス分類
  • 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時間ぶっ通しで行わせていただきまして、各々真剣に取り組んでいる様子が見て取れました。

スコアサーバー等に少し不具合があったのですが、トラコン運営の@porisuteruがリアルタイムでデバッグしていました汗

終結果は…!

少しドタバタしたのですが、最終的に今大会のWinnerはKaggle Grandmasterの@smlyさんでした! おめでとうございます!商品は最近話題のGoogle Home miniを贈呈させていただきました。

Twitterにて解法を共有されていらっしゃったので、掲載させていただきます。

各データセットの特徴を捉えてロジスティック回帰で分類というシンプルながら最強感あるモデルで優勝された模様です。

またKaggle masterである@threecourseさんはXGBoostを用いたモデルで2位に入られました。

これは僕のデータセット作成ミスなのですが、特徴量の中に正解ラベルが混入していたようです…。お試し精度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