kaggle Tweet Sentiment Extraction 2位入賞報告(B4・高橋寛武)
*この記事は高橋寛武さん(情報学部自然情報学科4年)が、2020年8月3日に名古屋大学・教育記者会との定例懇談会で行った報告の原稿とスライドの一部を、指導教員である時田恵一郎が編集して掲載するものです。情報学部1期生による世界的な予測モデリングコンペティション入賞の快挙は、情報学研究科Webの受賞情報ページでも紹介されました。
こんにちは。情報学部自然情報学科複雑システム系時田研究室4年の高橋寛武です。表記の通り、kaggle Tweet Sentiment Extractionコンペティションで2位入賞しましたので、ご報告します。「名古屋大学情報学部への進学を考えている高校生」や「プログラミングコンテストに興味のある大学生」の皆さんが、kaggleに興味を持ってもらえれば嬉しいです。
kaggleとは
kaggleは、2010年に設立された、世界最大規模の機械学習コンペティションのプラットフォームです。kaggleは2017年にGoogleに買収されており、2020年7月時点で、情報科学,統計学,経済学,数学などの分野から14万人以上)が登録しています。登録者はデータサイエンティスト、研究者、データサイエンスに興味を持つ学生や他業種の人が多い印象です。
Wikipediaのkaggleのページによると、「公開課題方式により、HIV研究の最新技術の促進、チェス格付けや交通量予測など、多くの課題解決につながった。 即座に反映されるスコアボードが、回答者に既存の最適解を超えた革新策を導出させる動機付けとなっている。模範回答は頻繁に公式ブログに掲載されている」とのことです。
コンペティションの参加人数は年々増加していて、今回参加したTweet Sentiment Extractionコンペティションには世界各国2,227チームが参加しました。
今回私が参加したTweet Sentiment Extractionコンペティションも典型的な「機械学習コンペティション」のひとつです。機械学習コンペティションとは、機械学習の手法を用いて、企業などが抱える課題に取り組み、その問題解決の精度に応じて賞金などを得るものです。これは、コンペティションを開催する企業にとっては、解決してもらいたい課題を解消することができますし、分析者にとっても賞金以外に普段は触れることのできない企業が保持しているデータなどを分析することができるというメリットがあります。つまり、kaggleは、企業と世界中のデータサイエンティストたちをつなぐオープンなプラットフォームです。従来はコンサルティング会社が請け負っていた事業が世界に開かれることになったわけで、kaggleは新しいITビジネスモデルを創出したともいえます。
Tweet Sentiment Extractionコンペティション
以下、今回入賞したコンペティションの概要を説明します。
コンペティションの名前はTweet Sentiment Extractionというものです。取り組む課題は、個人がTwitterにツイートした英語の文章に対して、内容が”positive”, “negative”, “neutral”のどれなのかという感情を表す情報(タグ)が与えられていて、その感情が文章のどこを見て決められたのかを予測するものになります。
具体例を見てみましょう。まず、与えられたツイートが”I saw the play of it here, it was amazing”で感情が”positive”だとします。この場合だと、人間が見ると”amazing”が答えだと簡単にわかると思います。
しかし、これをコンピュータに学習させて自動で答えになる箇所を抜き出すとなると、想像以上に難しく、あまり前例もないためチャレンジングなものでした。このように、人間が書いた文章をコンピュータに理解させて、問題を解決する分野は自然言語処理と呼ばれ、今回の課題は自然言語処理と機械学習を組み合わせたものとなっています。私は、その二つの分野に興味を持っていたこともあり、楽しみながら取り組むことができたことも、入賞につながったのではないかと考えています。
以下、入賞できた要因について個人的な分析を述べます。
大きく分けると二つの要因があると考えており、ひとつはデータのノイズにうまく対応できたこと、そしてもうひとつは他のチームが取り入れてない手法を用いることができたということです。
今回提供されたデータには、2種類のノイズが含まれていました。ひとつは人の感覚の違いによるノイズで、もうひとつはデータ作成時に生じたノイズです。
人の感覚の違いによるノイズとは、文章から感情が現れている部分を抜き出す場合、人によって抜き出す箇所が異なる場合が多く、同じような文章なのに予測対象が異なるケースがあるということです。例としては、”I’m very happy today.”という文章に対して、感情が現れている部分を抜き出す際に、“happy”を選ぶ人がいれば、”very happy”を選ぶ人もいるといったケースです。このような問題に対しては、そのようなノイズを学習しすぎないようにすること(「過学習」を防ぐこと)で対処することができました。
一方のデータ作成時に生じたノイズは、空白文字を余分に含んだ文章だと予測対象の部分がずれていることがあったというものです。例としては、”is back home now [半角スペースx5] gonna miss every one”という文章に対して、答えが”onna”になっている場合です。これは少し考えるとわかるのですが、本来答えになるべき箇所はその後ろの”miss”であり、gonnaの前で5つ余分に空白を含んでいるためこのようなズレが生じているとわかります。このようなノイズをデータをよく見ることで発見し、対処するということも必要になります。(ちなみにコンペティションの主催者にどうしてこのようなズレがデータに残っていたのか聞いてみたところ、アノテーション(答えとなる部分を選ぶ作業)はクラウドソーシングで行っていて修正作業が困難であったこと、そしてこのようなノイズに参加者がどう対応するか気になったとのことでした。)
また、入賞するためには、他のチームが取り入れていない手法を用いることも重要です。今回の場合だと、自然言語処理の他の課題である「質問応答」という領域で用いられている、答えとなる候補を複数のステップで並び替えて一番良いものを選ぶという手法を採用したことにより、精度の向上につなげることができました。
より詳しい説明は、kaggleのサイトにアップしていますので、興味のある方は是非チェックしてみてください。
大学での学びとの関係
最後に、大学での学びとkaggleの関係について紹介します。
一つ目は、講義で学んだことを活用して取り組むことができるという点です。情報学部では機械学習や自然言語処理の講義があり、そこで学んだ知識を使って様々な課題に取り組むことで、kaggleに参加してよい成績を収めるための知識、理解および経験を深めることができました。
二つ目は、英語や線形代数などの基礎科目が土台となっているという点です。研究をする上でも重要な基礎科目の勉強はkaggleに取り組む際にも土台となっていて、英語で議論をしたり、使えそうな手法を論文などを読んで調査する際にとても役立っていると感じています。
三つ目は、情報学部の方針が取り組みのきっかけになったという点です。情報学部自然情報学科では様々な分野の勉強を広く修学し、興味を持った分野をさらに自分で深めていくための環境が整っており、自分の場合は講義で学んだPythonや機械学習を勉強し続けたことが今回の入賞につながったと考えています。
現在私はkaggleのコンペティションのレーティングが188位(最高時は143位)でMasterの称号を得ていますが、近いうちに世界でも160人程度のGrandmasterの称号を得られるよう研鑽を積んでいきたいと考えています。