完全感覚アノテーションで心が壊れた話

## はじめに
2019年もあと少しで終わりです。
皆様、いかがお過ごしでしょうか。
年末といえば、紅白、ガキ使、__そろそろ仕事にも慣れてきた頃にやらかしてしまった入社2年目社員のQiita記事__ がつきものですね。
本記事では、今年の夏にアノテーション作業になめてかかり心が壊れた2年目社員(＝私)の記録を紹介したいと思います。

※本記事は[やめ太郎](https://qiita.com/Yametaro)氏リスペクトでお送りします！

## 第0章　チュートリアル　～アノテーションとは～

皆さんは機械学習におけるアノテーションをご存じでしょうか。
教師あり学習において、モデルの作成には教師データが必要不可欠です。
例えば、画像から犬と猫を判別するようなモデルを作成するには犬と猫の画像を学習させる必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342285/3f320c2c-3967-ac43-9854-aad2aa947508.png)


このとき、学習させる画像に「これはイッヌ」「これはネッコ」という風にタグをつけます。
この作業のことをアノテーションといいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342285/d0cacece-f8dc-254c-c5ec-be6b90033492.png)


一般的に、質の高いモデルを作成するためには質の高い学習データを大量に用意する必要があります。
ロジックやアルゴリズムも大事ですが、同じくらいアノテーション作業も高品質なモデルの作成には重要なのです。


## 第1章　災厄は突然に　～ワイ君、アノテーションしといてクレメンス～
まずは夏休みまであと10日という今年の8月上旬に行われた、私と上司のやり取りをご覧ください。

上司「ワイ君、この人物画像データに笑顔かどうかのアノテーションをしておいてくれ」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342285/2b93a580-ac93-ea70-018c-dc64b852962b.png)


ワイ「分かりました！どれくらいのデータで、期限はいつまででしょうか？」
上司「データ数は __20000枚__ 、期限はなるべく早く、出来れば __夏休み前__ までにお願い」
ワイ「…？えっ後10日しかｎ」
上司「あ、アノテーションに充てられるメンバはワイ君しかいないから1人でよろしくね」
ワイ「」
上司「いいか！アノテーション作業はモデル作成においてとっても重要だからな！手を抜くんじゃないぞ！」
ワイ「」
上司「じゃあよろしく」
ワイ「」
ワイ「」
ワイ「」
ワイ「まぁなんとかなるやろ＾＾」

これが悪夢の始まりでした。
今思えば、この時点で作業量やメンバ増員の見直し、アノテーション専門部隊に外注できないか等を上司に交渉するべきでした。

## 第2章　甘すぎる作業見積もり　～トイレもご飯も我慢して～
弊社では1日の勤務時間は約8時間です。
仮にアノテーションを __1画像につき1秒__ で行うとしましょう。
__トイレもご飯も我慢して丸1日__ アノテーション作業をしていれば、__28800枚__ の画像を1日でアノテーションできることになります。

ワイ「なんや！10日どころか1日で終わるやん！楽勝楽勝＾＾」

__当たり前ですがそんなわけないです。__
しかし、アノテーション作業をこれまでしたことがなかった私はこんなガバガバの作業見積もりをしてしまったのです。

ワイ「まあ多めに見て5日もあればアノテーション作業は終わるだろうし、他の業務はその後にリスケしとこ＾＾」

もう一度言います。
__当たり前ですがそんなわけないです。__

## 第3章　1日目　～君は、笑っているのかい？～
ワイ「ほなさっさと始めよか！」
ワイ「お！いい笑顔やな！これは __笑顔フォルダ__ へ！」
ワイ「すごい真顔やなこいつ。これは __笑顔じゃないフォルダ__ へ！」

与えられた人物画像をこのように笑顔フォルダと笑顔じゃないフォルダの2つへ振り分けていくことにしました。

ワイ「君は笑顔フォルダ！」
ワイ「君は笑顔じゃないフォルダや！」
ワイ「楽勝楽勝！ちょちょいのちょいやで～！」

大体200枚程度アノテーションした頃でしょうか。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342285/7c7ccef7-e5ce-08e6-6a34-fc14bf2f74ae.png)

ワイ「ん？これはどっちや？笑ってるようにも見えるけど真顔にも見えるな…」
ワイ「…」
ワイ「まぁええわ、笑顔フォルダにぶち込んどこ＾＾」

お分かりいただけたでしょうか。
あろうことか、その時の感覚で画像を分類してしまったのです。
2日目、このミスが私を大きく苦しめることになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342285/c5b05c67-c06f-66a6-e13c-44c98e0dd4e2.png)

ワイ「こいつも微妙やな…どっちやろ…若干真顔寄りか…？よし、笑顔じゃないフォルダへ！」

結局この日は3000枚程度をアノテーションし、帰路に着きました。
大丈夫、ガバガバ見積もり上では後4日で終わります。

## 第4章　2日目　～お前、昨日もおらんかったか？～
ワイ「ほな今日も始めよか！」
ワイ「お！ナイス笑顔ゥ！笑顔フォルダへ！」
ワイ「泣きそうな顔しとるな君。笑顔じゃないフォルダへ！」

この日も意気揚々とアノテーション作業を開始しました。
少しした頃です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342285/3ac4f28a-8258-f1b7-d564-c38e4637d08f.png)

ワイ「ん？これは…笑ってるのか？」
ワイ「そういえば昨日も似たような画像があったな、どうしたんやっけ」
ワイ「あぁそうそう、笑顔フォルダに入れたんやった。ほな君も笑顔フォルダやな」
ワイ「あれ、でも似たような画像で笑顔じゃないフォルダに入れた画像もあったな」
ワイ「うーん…」
ワイ「まぁ笑顔じゃないやろ多分。笑顔じゃないフォルダへGOや！」

この日、このようなケースが何度も発生しました。
しかし、私は全てそのときの気分で分類していたのです。
2日目は、丸1日アノテーション作業に充てられたので、10000枚程度の分類を済ませることができました。

ワイ「時間があるとはいえ、1日中ずっと同じ作業は疲れるな…結構頑張ったし今日はもう帰ろ…」

疲労と満足感を感じながら、この日も帰路につきました。
__翌日、惨劇が待っているとも知らずに。__

## 第5章　3日目　～ワイ君、やり直してくれないか～
翌朝、出社しアノテーション作業に取り掛かろうとしていた時でした。

上司「ワイ君おはよう、アノテーション作業は進んでるかい？」
ワイ「おはようございます！半分以上終わりました！このペースだと10日も必要なかったですね(笑)」
上司「おお！それは頼もしいね！途中結果が見たいから、現時点での分類結果を共有してくれないかい？」
ワイ「了解しました！メールでパスを送っておきます！」
上司「ありがとう！じゃ引き続きよろしく頼むよ！」
ワイ「いや～労ってもらうと元気が出るな！ほな、今日も頑張ろか＾＾」

この日も黙々とアノテーション作業を進めていきました。
惨劇はお昼休み頃に起きました。

ワイ「ふぅ～疲れた！そろそろお昼休みか！休憩しよ！」
上司「ワイ君、ちょっといいかな」

そこには、朝の __仏のような笑顔__ ではなく __般若のごとき形相の__ 上司が立っていました。

ワイ「どしたんすか、お昼休みに会議室に呼び出して」
上司「ワイ君、結果を見させてもらったんだけどね」

上司は、笑顔ともそうでないともとれる2つの画像を指してこう問いかけてきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342285/e06cfda4-ddc8-b3a3-1a8d-4002e513878c.png)


上司「なんでこっちは笑顔フォルダで、こっちは笑顔じゃないフォルダなんだい？」
ワイ「えっあっえっと…」
上司「これもそうだし、これもそうだ。すべて結果がバラバラなんだけどどうなっているんだ」

そうです。
問題になったのは、1日目、2日目に __完全感覚アノテーション__ した画像達でした。

ワイ「えっと…その…」
上司「これでは正しいアノテーションとは言えない。モデルの精度にも大きく影響してしまう」
ワイ「…すみません」
上司「正直、他の画像やこれから取り組んでもらう分も信頼できるとは言い難い」
ワイ「…はい」
上司「申し訳ないが、 __最初からすべてやり直してくれ__」
ワイ「ﾐ゜」

「1からすべてやり直し」というショックが大きく、この日はほとんど作業が手につきませんでした。

## 第6章　4日目　～ワイ君、壊れる～
ワイ「1から全部やり直し…1から全部やり直し…」

3日間の作業が無に帰したショックで十分な睡眠をとることができないまま出社しました。

ワイ「どうしよう…リスケした作業にも影響が出てまう…」
ワイ「…いや悩んでても仕方ない。また最初からやっていくしかないんや」

こうして再び、1枚目から画像のアノテーションを進めていきます。

ワイ「君は笑顔…君は笑顔じゃない…君も笑顔じゃない…君は笑顔…」
ワイ「__何か腹立ってきたな、なんでこいつら笑てんねん__」

もはや正常な精神状態ではありません。
この日はお昼休みも返上して黙々とアノテーションしていきます。
そして再び、問題の画像と出会います。

ワイ「出た…どっちとも言えん画像や…」
ワイ「前は基準が無かったからバラバラになったんや…」
ワイ「よし、今後こういう画像は全部 __笑顔じゃないフォルダ__ に分類することにしよう…」

笑顔とも笑顔じゃないとも取れる画像は全て笑顔じゃないフォルダへ分類する、とルールを定めることにしました。
これで問題は解決したかのように思えます。
しかし、そんなことはなかったのでした。
少しした後、再び笑顔とも笑顔じゃないとも取れる画像に出会いました。

ワイ「出た、どっちとも言えん画像や…これはさっき決めたルールに従って、笑顔じゃないフォルダへ…」
ワイ「…」
ワイ「いやでもこれ、笑ってないか？笑ってるよな…」
ワイ「そもそもさっき決めたルールは正しかったんやろか」
ワイ「…うん、これは笑顔フォルダに入れるべきや」
ワイ「ふう、やらかすところやったわ。危ない危ない」

__やらかしています。__
自分で定めたルールをわずか数分で殺してしまいました。
この日の夜10時頃、無人のフロアには泣きながら真顔の画像を笑顔フォルダに分類する男がいたそうです。

## 第7章　5日目　～ワイ君、会社休むってよ～
上司にアノテーション結果をダメ出しされる夢を見ました。
朝起きると猛烈な吐き気に襲われ、すぐにトイレに駆け込みました。
私は会社を休みました。

## どうすればよかったのか
結局上司に頭を下げ、アノテーションメンバを増員してもらい、何とか事なきを得ました。
どうすればこの惨劇を防ぐことができたのでしょうか。
振り返ってみましょう。

※私はプロのアノテータではないため、以下は経験に基づく個人的な反省点です。

-  __アノテーション基準を設けるべきだった__

今回の最も大きな原因はアノテーションの基準を設けなかったことです。
そのため結果が異なり、作業の出戻りが発生してしまいました。
アノテーションの基準を設ける際には、笑顔の代表画像、笑顔ではない顔の代表画像を予め抽出しておき、それらに従って分類を行う等の工夫が必要です。

- __複数人でアノテーションを行うべきだった__

笑顔のような連続的に変化するものを対象とする場合、必ずしも設けた基準に従わない場合があります。
そのようなときは、__Voting (投票制)__ を行います。
これは複数人でアノテーションを行う際の手法で、1枚の画像に対して過半数 (もしくは統計的に算出した人数) のタグ付けが一致していればそれを正解タグとして採用し、そうでない場合は分析から外してしまう、というものです。
Votingを行うことによって、アノテーション結果が個人に依存してしまうことを防ぎます。
ただし、高コストになってしまうというデメリットがあります。

- __作業見積もりをきちんと行うべきだった__

1枚1秒でアノテーションできるわけありませんし、8時間ぶっ通しでアノテーションできるわけもありません。
長時間同一の作業を行うと人間は集中力が著しく低下してしまいます (経験談)。
例えば、1日2時間だけ、と短時間で分散して作業を行うようにするべきでした。

- __専門組織に外注するべきだった__

もしも予算に余裕があるのであれば、アノテーションを専門に行っている組織に外注しましょう。
彼らはプロアノテータの集団ですし、経験による技術や知見も持っています。
教師データの質に重きを置くのであれば、この手が最善だと思います ~~(本音は二度とやりたくないからです)~~ 。

- __おまけ__

現在では、そもそもアノテーション作業を減らすため、たくさんの教師データを必要としない __半教師付き学習__ が研究されています。
半教師付き学習については、東京大学の杉山先生による[こちらの資料](http://www.mlit.go.jp/common/001244998.pdf)が大変分かりやすいです。

## おわりに
この夏、__完全感覚アノテーション__ によって1人の若者の心が壊されてしまいました。
今後アノテーションをしなければいけない方にとって、本記事が少しでも参考になればと思います。


## 参考文献
- [ABEJA TECH BLOG](https://tech-blog.abeja.asia/entry/annotation-survery)