Goみなさん、教師データ作ってますか?!機械学習のツールも多くなり、データがあれば簡単に機械学習で問題を解ける環境が整ってきました。データ作成は重要ながらも未だに大変な作業です。最近、私もいくつかのドメインで教師データを作る機会があったので、能動学習を使ってコマンドラインから簡単に教師データ作成(アノテーション)ができるツールを作ってみました。例があったほうが説明しやすいので、問題設定を先に。あなたはエンジニアが集まるSlackチャンネルに、最近人気の技術エントリを定期的に投稿するbotを作りたくなったとします。URLが与えられたときに、それが技術エントリかどうかを判定する機械学習の分類器があると便利ですね。これを実現するために、あなたはtwitterに流れてくるURLやはてなブックマークの新着エントリのURLから教師データの候補となるURLのリストを10万件取得しました。あなたは仕事も忙しいので、教師データはせいぜい300件程度しか付ける時間はなさそうです。同じ300件の教師データを作るならば、なるべく精度が高くなるような300件を選んで教師データを作りたい、というのが今回の問題設定です。能動学習を使って教師データを効率的にアノテーション優先的にアノテーションすべき300件のデータを能動学習に選んでもらいましょう。以下が説明用の図です。赤が正例(技術エントリ)、青が負例(それ以外のエントリ)を表わしています(2次元で書いていますが、実際は数千から数万次元程度です)。正例/負例を分離する境界のことを分離平面と呼びますが、分離平面の近くにいる事例や遠くにいる事例が存在します。分離平面から近い/遠いは以下のことを表わしています。右上や左下に固まっているものWebデータでは実際には左下のような事例が非常に多く、これらをずっとアノテーションしていると鬱々としてきます。いったものはなるべく見ず、分離平面に近い事例を中心的にアノテーションすることは、精度向上の観点だけでなくアノテーターの精神的な観点からも重要です。能動学習には様々なアルゴリズムがあります。今回実装したものはかなりシンプルなアルゴリズムで、分離平面から最も近い(自信のない)事例からアノテーションして教師データに追加し、再学習するというものです。シンプルなのでいくらでも改善の余地がありますが、これだけでも大きな効果が出る場合があります。過去に実験したエントリがあるので、気になる人はそちらを参照してください。go-active-learningを試してみるダウンロード/インストールgithubにコードを置いています。cloneしてmakeすれば簡単に使えます。github.com/syou6162/go-active-learning能動学習でアノテーション考え方が分かって、ツールもビルドできたところで実際に試してみましょう。少量の教師データとまだアノテーションされていないURLが入ったファイルを用意します。今回ははてなのエンジニアのBlogを正例(2列目が1のもの)、nhkニュースなどを負例(2列目が-1のもの)としました。アノテーションされていないURLとしては「それどこ」や「メシ通」を入れています。-1http://srdk.rakuten.jp/https://www.hotpepper.jp/mesitsu/entry/kekkojin/17-00138go-active-learningを使って、アノテーションしてみましょう。(それどこ)「メシ通」のラーメンの記事(入力ファイルの一番下のもの)より自信がないということで、「それどこ」の記事がアノテーションする最初のエントリとして提示されました。技術エントリではないのでnを押して負例としてアノテーションします(pは正例としてアノテーション)。hを押すと、可能なコマンドの一覧が見れます。sを押すと、output-filenameで指定したファイルにこれまでアノテーションした事例が保存されます。アノテーションされ、教師データに追加された事例も含めて再学習が行なわれ、再度最も自信がない事例が提示される...といった感じでアノテーションを進めていきます。現状、テキストが入力で二値分類でしか動かないですが、簡単なgoのコードなので多値分類への拡張や(特徴量抽出を頑張れば)画像への応用もできるんじゃないかなと思います。Go言語を使って得られた効用/感想Goで書いていて、これはよかったなぁと思ったことをいくつか挙げてみます。D...論文読み会をやるので久しぶりに論文を読みました。#3で機械学習を使った趣味サービスにお...最近、仕事のちゃんとした登壇が多かったので、趣味でやってい...2017-11-222017年の振り返り技術編ふと思いたったので書く。2016年は自然言語研究者からWeb系エン...2017-11-13IBIS2017の聴講ログ今年で20周年のIBIS2017に仕事で聴講参加しました。IBISは意外...2017-05-29go-active-learningを改良している話(Slackからのアノテーションをサポートなど)以下の話の続きです、地味に続いています。(1)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。