* DataRobot JAM: このコーナーではDataRobot社内でのデータサイエンスに関する雑談からちょっとした小ネタを投下するコーナーです。
Data Augmentationは画像ではおなじみのデータをズラしたりひっくり返したり、回転させてデータを水増しする手法ですが、その本質はデータ数を増やすことではなく、「とある変換操作がターゲットラベルを変化させない」というドメイン知識をモデルに注入することに相当のではないかと言われています。その理解に立つと画像以外のセンサーデータやテーブルデータでも応用が効いてきます。例えば、以下のように3軸加速度センサーの方向をランダムに入れ替える事例があるかと思います。
https://arxiv.org/pdf/1706.00527.pdf
皆さんはどんなアイデアやクエスチョンがあるでしょうか?もし面白いAugmentationの仕方が思いついたらシェアしていただけるととても嬉しいです。
医療AI関連の研究で、昨年下記論文が論争を巻き起こしたそうです。
https://arxiv.org/pdf/1909.01940.pdf この論文での指摘「ドメインシフトをカバーできるようにドメイン知識に基づき賢くAugumentationを行わないと、良いモデルにならない」は重要な示唆を与えていると感じました。
山本さんが話してくれた過去のKaggleコンペのソリューションで、仮説を元にデータをランダムにdropし、似て非なる別のデータとしてAugmentationするという話が非常に面白かったです。色々な応用が効きそうですね。
詳しくはこちら!
https://www.kaggle.com/c/recruit-restaurant-visitor-forecasting/discussion/49328
さっきは勉強になりました!
そのリンク先の3軸加速度センサのように(https://arxiv.org/pdf/1706.00527.pdf)、センサデータでも確かに使えますね。実験データのサンプル数が少ないお客様にいいアドバイスできないかと考えてます。「ターゲットラベルを変えない」が重要ですね。
感覚として、生の状態としては単一の特徴量だけど情報量が多いものでうまく適用できそうですね。
ここで出てないですが、GPS位置情報とかもいいかもしれませんね。
画像と無理やりくくることもできるかもですが、ある程度の曲がりかたや別のルート通ってもそこに向かったという事実は変わらないというような変化を加えて増幅させられるかも。
kaggleのjigsaw toxic classficationコンペで、textデータが本来長文なら、短文に分割、Head のみ、Tailのみ、そういうaugmentation手法もあります。
少しそれますが、疑似ラベルの付与も Augmentation ですよね。
クレジットスコアリングにおける Reject Inference にはいくつかの Augmentation がありますが、Fuzzy Augmentation を知ったときに「こんなやり方もあるんだ」と思った記憶があります。
https://scorto.com/credit-scoring-article/
2つの画像をベータ分布を使用して混ぜたり、一部をあえて欠損というのもありましたね。
フリップや回転の話でいくと、字はフリップしたり回転させてもあまり精度が上がらなかったという事例が好きです。確かにフリップされた字は人間でも非常に読みづらいので、そういった予測対象の特性がAugmentationでは重要になってきそうですね。
文字とかフリップしたら漢字なんて意味が変わってしまうものもありますしね。カタカナとかもそうですかね。メとナとか。
大事なのはやはり増幅させても本質を見失わないというところです。マルチラベルならその物体の組み合わせ全てで増幅させていくとどの場所に何があってもそのものの定義は変わらないというのは行けそう。
熟慮せずにオーグメンテーションして昔痛い目を見たことがありますww
※具体的には、★をTrueにするだけで増幅ができてしまう。
# Now let's do the training. The train_simple_object_detector() function has a
# bunch of options, all of which come with reasonable default values. The next
# few lines goes over some of these options.
options = dlib.simple_object_detector_training_options()
# Since faces are left/right symmetric we can tell the trainer to train a
# symmetric detector. This helps it get the most value out of the training
# data.
options.add_left_right_image_flips = True #★
やはり、
といった議論が必要なんですよね。例えば、店舗や倉庫でのカメラ画像の物体検出等では、
といった感じで、補集合を意識するのが重要なのかもしれません。
実例や具体的な実例についてご紹介ありがとうございます!