下町データサイエンティストの日常

下町データサイエンティストの成果物

下町データサイエンティスト 新卒2年目が終わる

f:id:pira_nino:20200401225639p:plain

新卒2年目が終わる

こんにちは。nino_piraです。
表題の通り、 新卒2年目が終わりました。。。
1年前に書いた「新卒1年目が終わるブログ」の続編です。さて「今年も1年間何をやってきたか」を振り返りたいと思います。

pira-nino.hatenablog.com

注意書き

昨年同様、受託分析なのでクライアントの名前が出る話は一切出せません。つまり、具体的な仕事内容については書けません。 これ故に、受託分析会社のデータサイエンティストは勉強会などの表舞台になかなか出てこないのかなぁと思っています。自分も色々話したいことはありますが、表舞台に出すのはやはり難しいです(汗
また、 私の所属会社を一部の方はご存知 or 察せられるかと思いますが「一応個人のブログ」であることをご了承ください。
もはや個人名 & 所属を隠しているようで隠していない状態ですが、あくまでも個人ブログなので緩く読んでください。。。
完全に余談ですが、この記事の3倍程度は書かれてい社内wiki(コンフル)に投稿した記事の抜粋バージョンとなります。外部公開用にマスキングかけるのって難しいですね(汗

4-7月:因果推論案件

この案件実は色々あったのですが、詳しい話を書けないお約束なので因果推論に話題をフォーカスします。
実は「因果推論?ナニソレ?」な状態でアサインされました。
因果推論ブログがそれなりにバズったので、最初から詳しかったのでは?と勘違いされますが、3ヶ月で案件運用しながら技術キャッチアップを0から行ったのが実情でした。。。
クライアントの業種はもちろん書けないのですが、因果効果の算出って超絶難しいなぁと感じた案件でした。
データの背景要因を揃えることが必須な因果推論において、データ理解に一つ壁がある受託分析という形で取り組むことへの難しさを感じました。
加えて、不確実性を有する分析結果についてクライアントに伝えるのって難しいということも感じました。。。。 どう頑張っても取得データからバイアスを完全に除くことは不可能なので、算出された値にどこまで自信があるかを強く言えないことがジレンマでした。。。

さて因果推論の話に戻ります。せっかく因果推論をまとめて勉強したし、アウトプットとしてブログ作成や登壇もしようとのことでいくつか資料を作ったので、ご参照頂ければ幸いです。。。

pira-nino.hatenablog.com

pira-nino.hatenablog.com

speakerdeck.com

speakerdeck.com

ちなみに打ち上げで行った焼肉屋は最高でした。写真に写っている手は仲良い先輩の手です。

tabelog.com

f:id:pira_nino:20200331190217p:plain

4月〜:Data Gateway Talk(dgtalk)

データ分析界隈の方々を集めた自分企画のイベントです。

data-gateway-talk.connpass.com

開催までの経緯は以下のブログに書いてありますのでご参照ください。

pira-nino.hatenablog.com

初回を4月にwantedlyで開催したのですが 、、、

  • こんなに応募来ることは想定していなかったので楽しかった
  • 第二回もやろう!!!のなり計画が再度進む

となり、初回で終わらずに第二回にけ継続することになりました。(結果的に1年継続しています)

さて、せっかくdgtalkの話に触れたので初回以外も踏まえた一年間の感想もここに書いてしまいます。
一年を振り返ると自分にとって、このイベントの存在は相当大きいものでした。 というのも初の自主開催イベントであることも加え、外部のデータサイエンティストと仲良くなる機会が増えたりなど、なんだかんだ思い入れのあるイベントです

約3ヶ月に1度の定例開催の形式で1年間継続開催を達成できたのことは、ひとえに運営の皆様のお陰です。 ちなみに、運営は、第五回@ブレインパッド の片付けが終わったあとにそのままブレインパッドのラウンジで23:30まで飲むくらい仲が良いです。

各回のイベントの感想を簡単に以下に書きます。

第一回

  • てつろーさんの資料が最高にエモかったです。データサイエンティストがsexyと言われて早10年、、、
  • wantedly。おしゃれ。好き。
  • 初回でそれなりにバズったので楽しかった

f:id:pira_nino:20200331192254p:plain

speakerdeck.com

第二回

  • FiNCおしゃれ!!!モニターでかい。。。
  • この辺からおしゃれな会場巡りも楽しみの1つに。
  • 生ばんくしさんテンション上がった

f:id:pira_nino:20200331192417p:plain

第三回

  • 学生時代の繋がりもありzozo used の知り合いに頼み込み会場借りれた、、、エモい、、、
  • きぬいとさん7min枠で20min話す事件。。。彼とは今では月一で飲みをする仲です
  • 吉田さん登壇ありがとうございます!!!

speakerdeck.com

第四回

  • この辺から知名度が上がり、場所貸し&登壇したいとの連絡が来るように = 安定した運営体制
  • というわけで会場は会場貸しでオファー頂いたレコチョク。おしゃれ。
  • 先輩枠は、同期のコネを活用しzozo研究所の後藤さんが登壇
  • レコチョクのテックブログにも掲載されて嬉しかった

f:id:pira_nino:20200331193028p:plain

techblog.recochoku.jp

第五回

  • 満を持してのブレインパッド での開催
  • しかし、いつものおしゃれな会場でないこともあってか、全然写真がツイッターに上がっておらずに凹む
  • 毎回公募LT枠が秒で埋まるので、時間調整などを行い枠を倍にしたが一瞬で埋まった(約1時間)

f:id:pira_nino:20200331193313p:plain

ohtaman.github.io

公募LT枠がconnpass公開から1時間以内に埋まったり、ハッシュタグTwitterの東京のトレンドで瞬間風速ですが、Top10入りを2回したりするなど、それなりに業界にリーチにできるイベントになったと感じています。

上記では触れることができませんでしたが、数々の登壇者やブログを書いてくださった皆様、聴講者の皆様、運営の皆様には頭が上がりません。。。
ここでは紹介仕切れませんでしたが、登壇者の皆様の資料について見ていただければ幸いです。

data-gateway-talk.connpass.com

自分としてはこのイベントを通して、多くの知見を得たり、様々な知り合いが増えたりと最高に楽しかったです。

また、本イベントのように同じ分野の仕事をしている人達が好きで交流しているというのもデータ分析業界特有の好きなところです。

完全に「あれ?このイベント終わるの?最終回?」という流れですが、コロナで延期になっている第六回はいつかしら開催するつもりです。
自分が学生時代にデータサイエンティストになるキッカケになったブログを書いているTJOさん、同年代強強u++さん / agataさんという熱い登壇者を抑えたイベントとして思い入れがあるので、コロナが落ち着いたら開催したいと思います。

data-gateway-talk.connpass.com

7月:新卒1-3年目でビアテラスに行く

「案件もひと段落したし、オシャレなビアガーデンに行きたい!!」と思い自分で企画。学生時代にはできなかったお金で殴るオシャレな飲み会ができて楽しかったです。 東京駅を見下ろすオシャンティなお店に似つかわしくない理系男子が約20名いるのはちょっとシュールでしたがまぁ楽しかったです。 f:id:pira_nino:20200216232851j:plainf:id:pira_nino:20200216232857j:plain

7-10月:画像の異常検知案件

この時期は画像の異常検知案件を担当していました。
前Phaseからの引き継ぎで「このタイプの不良が当てられなかったので改善してね」的な感じのタスクでした。
詳しく話せませんが、ネットワークを複雑にすることではなく、学習アルゴリズム工夫することで不良検知精度は上がりました。
がしかし、「画像案件の特有のつらみ」と「ディープラーニングを現場に落とす難しさ」を思い知ることができました。。。
弊社に依頼が来る画像タスクは犬猫判別のようなeasyなタスクではなく、人間の目でも判断が難しいタスク(異常検知のタスクに関しては、「謎不良」と個人的に呼んでいます)を扱うことがほとんどです。
また、第六回のdgtalkで話そうと思うですが、画像案件においては「撮像環境」と「不良定義」が非常に重要です。
これらの複雑な背景要因を踏まえると、「どのサンプルに対して」「どこまで何を検知すべきか」といったビジネス的目標も複雑になり、かつ検知アルゴリズムや検証方法も複雑なものとなります。
「これらの条件を全て満たして初めて現場に落ちる」ので、ディープラーニングを実現場に落とすにはなかなか大変であることを痛感しました。

話題は変わり案件の運用の話をしますと、「ドキュメント化の徹底」を行い、メンバー間の情報共有をスムーズにしました。仕事は一人でするものではないので、「いかに円滑にお互いの情報を共有するかが仕事の鍵」と言っても過言ではないと1年目で悟りました。
本案件では、「誰が何をしたか」「何の問題があるか」「どう対処していくべきか」「どのような結果が得られたか」を社内wikiへのドキュメント化を徹底した効果もあり、作業の属人化に関する問題がほとんど生じなかったことが良かった点として挙げられます。
一方問題点として、「ドキュメント化に手間がかかる」という問題があります。こればかりは能力でカバーしかないですね。。。
この辺のドキュメント化思想は1年目からの学びであったので、案件で活かすことができて良かったです。

余談ですが、google slideについて触れさせていただきます。
本案件ではgoogle slideを用いた資料作成を行なっていましたが、パワーポイントと比較し「複数人で同時編集」 できることが何よりも便利だと思いました。が、一方でデメリットもあります。pdfにした際に文字被りが起きることがある / そもそもfontがイケテナイ問題の2点です。色々検証しましたが、結論からいうとベストな日本語フォントはまだ対応していないのが実情です。というのもgoogle phontにはnot sansというイケてるフォントがありますが、google slideには未実装となっております。
申し訳程度にM1Plusを使うと絶対に文字被りが起きない(検証済み)が、いかんせん丸いのでビジネス的に使えるかと言われば怪しいレベルです。
このように、共同編集できるイケテルさと、pdfにするとビジネス的にイケていない資料になるのでビジネス的に美味しくないことのトレードオフが発生します。 案件のお客さんによりけりですが、google slideを使えると作業効率が上がるというのは圧倒的事実であると思います。。。 (ちなみに、office356は大丈夫とか大丈夫じゃないとか なんとか。。。)

8月:執筆に携わった本が出版

仕事で携わった強化学習の本が出版されました。 自分は方策勾配の章を担当しました。
本が出ると「書籍も書いてて凄い」的なことを業界外の人(主に高校の友人達)に言われることので、書籍執筆という対外的アウトプットって想定以上に影響力が大きいのだなぁと感じました。 (自分的には5章の1章分しか書いてないので、この話題に触れられる度に畏れ多いと感じています。。。)

www.shoeisha.co.jp

8月:B’zのライブ

18:30に新横浜に行けるフレックス。ありがとう。
後述に登場しますが、B’zの分析をどこかで話したいとのモチベから音楽分析のイベントを企画しました。
目指せB’zの人。

www.youtube.com

9月:呪いの人形事件

何気ないこのツイートが爆伸びしました。
思いがけず面識のない初代の方にまでツイートが届き、( ˙-˙ )となりました。

10月:KDD2019論文読み会

昨年行った勉強会で最も印象的であったので触れさせて頂きます。

LINEで行われた KDDという学会の振り返り会です。 connpass.com

KDDはML系の大きい学会の一つなのですが、ビジネス適用の話などの専用セッションとしてApplied Scienceのセッションがある学会です。
最新研究のそのもそでなく、応用に興味を持っている自分としては、かなーり刺激的な勉強会でした。

何とかしてKDD行ってみたいなぁー」と強く思いました。

10月:白金鉱業ミートアップ登壇

白金鉱業という勉強会のIBMさんとコラボ会に登壇しました。
150名以上の応募が来る末恐ろしい会(汗
登壇時間が20minでしたので、ぶっつけ本番ではまずいと思い10回以上リハをしてから臨みました。結果、-10sというジャストタイムで話せたので「リハしまくって良かった」と個人的には満足しています。。。
ちなみに「技術の話をしてくれ」というオーダーを受けたのですが「因果推論」か「強化学習」のどちらの話をするか悩みました。結果的に因果推論で登壇をしましたが、どこかしらで強化学習ネタでも登壇してみたいなぁとも思っています(小並)

brainpad-meetup.connpass.com

11月-2月:初PMとなる画像の異常検知案件

弊社では頑張れば2年目でPMをやらさせてもらえます。
元々エンジニアというよりはマネージャーになりたい志向であったので、とても嬉しかったです。
PMとはいうものの、マネージメントだけしている訳ではなく、分析方針の決定や自分でもコード書くといったように普通にメチャクチャ作業します(なんだったら論文も読みます)。
本案件が比較的サイエンス寄りの案件であったため、他案件と比較するとPMにも作業を求められる量が多かったことは否めませんが、おおよその他案件でもPMは手を動かす力が求められます。 というか手を動かせないと分析方針の決定やクライアントの説明ができません。

そんなこんなもあり、案件具体的な内容も書けませんが、案件運用に関して個人的に重要だなぁと思った点についてまとめさせて頂きます。

技術力

  • 技術力がないと、分析の方針が決められない
  • 早くセンス良く実装できる技術があればPDCAが高速に回せる

コミニュケーション力

  • 対社内
    • メンバー間の進捗の確認で手戻りを減らす
    • メンバー間の心理的安全性の確保
  • 対クライアント
    • クライアントが欲しい情報を抜け漏れなく、正しく伝える
    • クライアントが欲しい情報を見つけて分析に盛り込む

ドキュメンテーション

  • 自身の考えていることや、分析結果を正しく伝えるために「文字に起こす能力」は必須
  • 正しく早くドキュメンテーションを行えると、案件運用がいい感じに進む

11月:下町データサイエンティストと名乗り始める

「いい加減見習いを脱却してもいいのでは?」と思い勝手に下町データサイエンティストと名乗り始めました。
生まれも育ちも下町というだけで深い意味はありません(小並)

pira-nino.hatenablog.com

12月-1月:kaggle DSBコンペ

ひっっっっっさびさに kaggleをかじる。かじるだけで、しれっと辞める予定でした。 が、しかし、結局ガチで取り組むことに。。。

「どうやら転職してきたしゃおろんさんという人がkaggleガチらしい」との噂を聞き話しかけに行ったら、DSBをやってるとの話を聞き、「あわよくば一緒にやりたいなぁ」なんんて考えつつ、「お互いメダル圏内に行ったらチームマージしよう(暗黒微笑)」という感じで、自分もソロ参加。
緩くチマチマ土日にやっていたら「とんでもスコア」(当時LB36位)を出してしまいチームマージ。
ここで色々情報シェアを行なった際に「全部自作でやっていて(=公開kernel使ってない)、しゃおろんさんすげぇ。。。。」とビビった記憶。
で、ディープ専門家の先輩Aがジョインし、kaggle強強先輩Bがジョインし、Shirokane-friends爆誕

チームを組んだものの、色々やったけどうまくいかなかったり、そもそもうまくいくってなんだっけ?という話になったりと五里霧中の時期が続いていました。
当時こんな面白discussionが立てられるといったように、QWKという指標の特性上ちょっと閾値をずらすだけでスコアが大幅に変わったことが一番の霧だと感じていました。
社内の野良slackの#kaggler_2019dsbで年越しをするなど、なんだか色々やったけど結果的に、ヨクワカラン状態の年末年始でした。

ところが、最終結果が非常に面白い。
このコンペはLBではなくCVを信じていた人たちが勝つという(結果的に?)良コンペであった。
我々も含め、多くのチームはLBに踊らされていたが、本当の上位陣はCVを信じたsubを最終subにしていました。「これが本当の強者か、、、」と身に沁みた。。。 ちなみにLBだけを信じて、毒入りkernelをコピっていた人たちは見事にshake downしていました。

また、仕事に応用できる点として案件でもCVの切り方は本当に気を付けようと深く心に戒めを刻みました。。。

そんなこんなで、無事58位に入賞し、しゃおろんさんと2人揃ってexpertになりました。。。 f:id:pira_nino:20200331211946p:plain

さて、ここまでちゃんとコンペに参加すると「他の参加者のsolutionが気になる」のが世の常です。
そこで、会社に諸々交渉をし弊社で反省会を開催しました。
詳しくはしゃおろんさんのブログを見て頂きたいのですが、とにかく学びのある反省会でした。特に2位の方のメタ特徴量に関しては「なるほど!!」と驚きました。。。
強いkagglerの凄さを体感するDSB参加期間でした。。。。

umi-log.com

12月:OpenBP質問会

OpenBPの運営定例で「zozotechがやっていた、ツイッターの生配信で採用に関する質問をとるイベント(参照)やりたくない?」と話題になり企画がスタート。
社内の関係者にそっれっぽいドキュメントを作るなどして、多くの人を巻き込み無事実現しました。
自分が言い出しっぺということもあり、「質問が1個も来なかったら丸坊主(震)(だいぶ盛った)」といった気持ちで情報公開されたが、無事15個程度の質問が集まって本当に良かっです、、、、(坊主回避) 質問をしてくださった皆様ありがとうございます(汗

受託分析という外から見たらお堅そうな会社でも、頑張ればこんな楽しい企画を思いつく→実現までを1ヶ月ちょいでできるというワクワク感は楽しかったです。

1月:Music Analytics Meetup

たまにB'zの歌詞の分析をしていて、「どこからしらで登壇したいなぁ」「でも そんなイベントないなぁ」「せや!!自分で企画すればいいのか!!」とうことで企画しました。
twitterで協力してくれる方を募集したところ、ダイナミックプラスの萩元さんが名乗りを挙げてくださり、2人で企画をしました。萩元さんには、白金鉱業でも登壇して頂いたりと頭が上がりません。。。
個人的に好きな萩元さん作の「ダイナミックプライシングの事例資料」を添付します。

speakerdeck.com

さて、イベントの方ですが「音楽×データ分析」をコンセプトとし、Music × Analytics Meetup命名されました。

connpass.com

そもそも自分が音楽を好きという背景に加え、来ている人がみんな音楽オタクなので、まぁ、楽しかったです。
自分もこんな資料を作って登壇しましたので、よろしければ見てください。

speakerdeck.com

2月:昇給焼肉

仲良い後輩と「査定で給与上がったし焼肉行こうぜ!!」と盛り上がり企画。
最高でした。。。

tabelog.com

f:id:pira_nino:20200401220523j:plain

f:id:pira_nino:20200401220622j:plain

余談ですが、twitterでオススメの焼肉店を募集したところ、主にデータ分析界隈の皆様から10件近くのオススメを頂きました。(オススメされたこのお店から今回のお店を選ばさせて頂きました)
妙に焼肉に詳しくなったので一緒に行ってくださる方募集中です(小声)

その他:本年度行った勉強会達

なんだかんだ薄く広く何でも知りたい嗜好(?)なので色々な勉強会に行っております。
(勉強会おじさんにはならないようには心掛けています)

Data Pipeline Casual Talk Vol.2

  • 内容:最近でいうデータ整備人やパイプライン作る人たちの話。エンジニアより。
  • 感想:この分野全然ワカラン。 業務では、既にある程度綺麗なデータを触っているが、こういうその前段階知識も深めたい。

Machine Learning Casual Talks #10

  • 内容:結構ガチなMLの人が登壇
  • 感想:メルカリの機械学習システムすげぇ、、、

Data Platform Meetup

  • 内容:Data Pipeline Casual Talkと同様にデータ整備人の話
  • 感想:やはり勉強不足だ、、、こういう勉強会助かる、、、

PyData.Tokyo Meetup #21 LightGBM / Optuna

  • 内容:LightGBMのコミッターやoptunaの開発者が登壇
  • 感想:知っていることばかりで大して真新しい学びはなかった。200人規模のイベントだししゃぁないか、、、、

サブスクリプションミートアップ vol.2

  • 内容:サブスク ビジネスの人が登壇
  • 感想:単純に知らない世界やビジネスを知れて面白かった。すごく良かった。

KDD2019論文読み会
上述参照。KDD行きたい。

LT,分野初心者大歓迎!! ML for Beginners! MeetUp #1

Sports Analyst Meetup #5

  • 内容:スポーツ×分析
  • 感想
    • ずーーーーっっと行きたかったけど日程が合わず行けなかったイベントにやっっっっっっと行けた
    • 超楽しかった
    • サッカーの分析って難しいんだなぁと感じた。懇親会でサッカー分析の人たちと話せて楽しかった!!

Japan.R 2019

  • 内容:Rのお祭り
  • 感想

Machine Learning Production Pitch #5

  • 内容:ML Flowの話がメイン
  • 感想:m3、クックパッド、abejaはちゃんとML運用をしていることに感銘を受けた。

画像処理 × 深層学習 勉強会

  • 内容;実質GANとzozoの研究発表
  • 感想;タイトルの雰囲気と違ったけど、研究の話で面白かった。GANむずい。

2年経って今思うこと

情報共有(特にドキュメント化)について

我々受託分析のアウトプットとして「報告書.pdf」となることが多いのは周知の通りなので、クライアントに見せる系のドキュメント能力の必然性の話につていは割愛します。

ここでは、「組織としての情報共有」について思うところを書きます。
どこの会社もそうだと思うのですが、個人の持つスペシャリティを完全に共有することは大変難しいと思います。
また、誰が何を考えているかのドキュメント化して透明性を持つことは、組織として心理的に良い効果があると考えています。
これらを踏まえて、少なくとも自分の持っている知見や考えは社内に還元したいと思うので、これからも小さい記事であっても社内wikiであるコンフルに書き続けていこうと思います。
また、加えて「組織における情報共有について何かしらの知見を蓄えられればいいなぁ」とも考えています。(コンフルがベストソリューションかの議論は一回置いておく。何も書かないよりはマシだと認識しています。)

ちなみに、私は案件での記事を除いてこの一年で社内wikiに約100記事の投稿をしています。以下図のように、2020年になってから今日までの3ヶ月の間に案件に関係ない記事のみで約30本投稿しています。

f:id:pira_nino:20200401224211p:plain

ビジネスってなんだろ / 理想郷とは?

機械学習 / データ分析は使われてなんぼ」という話があるが、「うーん。なかなか難しい。。。」と思う機会が個人的に増えています。 ここでいう「使われる」とは決してシステムとして回るということだけではなく、例えば分析レポートでビジネスの意思決定に寄与するなど、我々の成果が何かしらの実業務にコントリビュートすることを意味します。
現状の日本では「機械学習 / データ分析による社会インパクトを作る理想郷」は超ごく一部のマーケットでしか通用しないと感じています。
なまじ機械学習という難しいソリューションを使わずとも、これまでと同様の手法でビジネスインパクトが出せる機会が多いというのはもちろん自覚しています。
さらに、機械学習という不確実性のあるソリューションに投資を行える企業が少ないことも自覚しています。。。
しかしながら、まだ26才の若輩者だし(?)「せっかくデータサイエンティストをやっているしデータ分析で社会的インパクトある仕事目指したいじゃん」という生意気な夢を持っています
そんなこんなで「うーん。。。。理想郷とビジネスってどういう関係性なんだろ、、、」「そもそもビジネスってなんだっけ?」「全てをHappyにするためには何をするべきなのか、、、」と生意気にも考える2年目終盤でした。

外部活動について

重い話が続いたので比較的カジュアルな話を。
今年は様々な活動を通して、外部の知り合いが増えた一年であった。
当の本人は策略的に行なっている訳ではなく、ただただ 楽しいことをしたいというモチベーションというのが本音です。
自分と同じデータ分析大好きな人たちと繋がりを持てるのって超楽しいんですよ。色々勉強や刺激ももらえるし(自分の性格的にも人と話すのが好きという背景もあります)。 という訳で、外部活動は会社の為とか自分のブランディングの為とか関係なく、完全に個人の趣味として続けていきたいと思います。

完全に余談ですが、きぬいとさんと通称:ダンダンダン定例という「月一でデータ分析界隈の人同士でただただ餃子を食べるだけの集まり」をやっていますので、ご興味がある方はご連絡ください。

キャリアについて

上記で「ビジネスってなんだろ?」とお堅い自分語りしましたとおり、「結局オマエはなにやりたいんだ?」が絶賛模索中です。
ひとまず与えられたミッションをクリアしていくことが直近の目標です。

具体的には、以下の2点だと認識しています。

  • (超重要)案件マネージメント能力(特にクライアントワーク能力の汎化性能)の向上
  • (継続)技術力をあげる

この2点について意識を持ち続けられる3年目になれればなぁと考えています。

最後に

ここに書けなかった内容もたくさんあるのですが、改めて1年間の振替りを書いてみると、「今年も色々なことしたなぁ。。。」と思いました。
1年目に比べ2年目は何かしら明確に成長したか?は自分ではよく分かっていませんが、少なくとも辿っている道に間違いはないと信じています。

まぁそんなこんなで、まだまだ頑張って行きますので3年目も応援(?)よろしくお願いいたします。

OpenAIのかくれんぼ強化学習の論文を読んだ

f:id:pira_nino:20200330173129p:plain

論文: Emergent Tool Use from Multi-Agent Interaction

昨年 2019/09/17にOprnAIが出したかくれんぼ(hide and seek)強化学習論文を読んだので、備忘がてらブログにメモ。
メモなので、正確に書いていないことだけはご了承ください。。。
タイトルは"Emergent Tool Use from Multi-Agent Interaction" という論文。
かわいいagent君達がかくれんぼを学習していく様子からは想像つかないタイトルですね(小並)

arxiv.org

openai.com

www.youtube.com

また、「そもそも強化学習とは?」といった基礎的な話題は割愛させていただくことをご了承ください。。。

(余談) 白金鉱業fmのコンンツのために読んだ

白金鉱業fm という有志メンバーでのpodcastを定期的に収録しています。
「ちゃんと技術を語る回を定期的に録ろう」となり、nino_piraも何か話そうとの流れになり、「そういや、かくれんぼ強化学習の論文とかリスナーにウケそう」と思い論文をまとめることにしました。
収録drivenラーニング」ですね(小声)

技術回のとしては初回のNGBoost回、なかなか良かったので宜しければ聞いてください。機械学習に少し精通している方ならば、NGBoost完全に理解したレベルまでいけると思います。

shirokane-kougyou.fm

shirokane-kougyou.fm

アブスト

  • かくれんぼというシンプルなタスクにおいて、マルチエージェントのセルフプレイで6段階の複数段階の戦略を学習できた
  • 段階的戦略の例:隠れる側のagentが箱を使い見つける側のagetの侵入を防ぐ -> 見つける側のagentがジャンプ台を使って乗り越える
  • このように見つける側と隠れる側の戦略が相互関係を持って学習が進んでいった
  • 評価:かくれんぼを事前学習とし、他タスクにfine-tuneさせた際に0からの学習や内発的報酬との比較を行なった

気なったこと / メモ
アブストではモデルの話はしていないんですね。(確かにモデル自体はシンプルです。)

1. イントロダクション

近年の強化学習の取り組みの限界

  • 長年、人間の物理的な世界の物体を感知して、相互作用を行うagentの強化学習の研究が取り組まれている。
  • 特定のタスク(環境)下で強化学習を行うアプローチが知られている
  • しかし、報酬設計の難しさや教師となるデモンストレーション獲得のために莫大な時間とコストがかかる問題がある
  • さらに、一つの環境で学習してしまうとさらなる向上性は見込むことは難しい(汎化性能の話)
  • 直接的な教師あり学習(環境から与えられる外部報酬)のみでは、スケーリング性が乏しいので、教師なし学習や内発的報酬のアプローチがある
  • しかし、教師なし学習は環境の複雑性に合わせた拡張性が乏しく、ドーキンスのnatural selection的ではない(急に壮大な話)
  • バックギャモン / 囲碁 といった古典的な離散ゲーム、Dotaのようなリアルタイムマルチエージェントタスクでは強化学習の成功事例があるが、現実の物理的世界におけるタスクとは異なる。

気になったこと / メモ
「物理環境でのタスクを解くぞ」という意思表明に感んじた。
ヒューマノイドを走らせるる研究は、走らせる場所が変化(例:平面を走るか、斜面を走るか)してもイケるので、その論文の紹介例も出せばいいのにと思った(小並)

本研究では、、、

  • かくれんぼの環境を導入する
  • agentの可視性に基づく(例:見つける側が隠れる側を視認できているか)報酬を元に学習を行う
  • ドアやバリケードなどの物理オブジェクトをagentが自身のニーズに合わせて動かせるので、環境も動的に変化する。
  • 学習を進めると、より複雑な環境になっていくことが確認された。
  • 人間が解釈可能な行動になっていくことも示された。

f:id:pira_nino:20200330122651p:plain

解釈可能な6段階の学習
(a) 見つける側(赤)隠れる側(青)を追いかけることを学び、隠れる側は見つける側からに逃げることを学習
(b) 隠れる側は壁などの道具の使い方を学習し、シェルターを作るようになった
(c) 見つける側はスロープを使ってジャンプし、る隠れる側のシェルターに飛び込むことを学習
(d) 隠れる側は、スロープを隠すことを学習
(e) 見つける側は、スロープを使わずとも、固定されていない箱の上に乗り慣性でジャンプできる(Box surfing = 箱サーフィン)ことを学習
(f) 隠れる側は、固定されていない箱を固定することを学習する

転移学習 / fine-tuning

  • 環境の多様性が大きくなりすぎると、学習が進みづらくなる
  • そこで、ターゲットを絞って事前学習を行ったagentを用いることで、0からの学習するagent / 内発的動機で学習されたagentよりも、早く学習 or 高いパフォーマンスが得られた

本研究のコントリビューション

(1) マルチエージェントのセルフプレイが、お互いの戦略を加味した戦略を学習する可能性があることを示した
(2) 物理的な環境では、道具を使うなど実世界で人間が行いそうな戦略を学習することを示した
(3) 転移学習 / fine-tuningの有効性を示した
(4) これらのコードをオープンソースで公開した

気になったこと / メモ
雰囲気を掴めたと思うので、アルゴリズムに興味ない方は6.評価まで飛ばしても良いいと思う。
6章のfine-tinningの話は非常に面白いので、MUSTで読んで欲しいです。

2. 関連研究

(省略気味で)

  • マルチエージェントの歴史
  • 内発的動機の話
  • 道具使用の話(本研究では、エージェント間の戦略を見てでツールの使い方を学習していく)

3. かくれんぼのタスク説明

かくれんぼの設定

  • チームベースの報酬
    • 隠れる側のagent全員が見つける側の視界に入っていなければ、隠れる側に+1点、見つける側-1点
    • 逆に隠れる側のagentが1人でも見つける側の視界に入っていれば、隠れる側に-1点、見つける側+1点
  • 無限に逃げられても困るので、18m四方のエリア外に逃げ出したら-10点
  • agentが掴んで動かせるオブジェクトが散財している
  • 動かせない壁や部屋もランダムに散財している
  • 1ゲームは240stepsだが、最初の40%(=96step)は隠れる側だけが動け、オブジェクトを動かしたりたりできる準備時間が用意されている(準備時間の報酬は0)

環境設定

  • MUJOCO(物理エンジン)で実装
  • ステージ設定
    • 見つける側1~3人
    • 隠れる側1~3人
    • 3~9個の可動する箱(最低3個は細長い形状)
    • 2個の可動スロープ
    • ランダムに生成された動かせない壁と部屋
  • agentが観測できる変数
    • 物体と他agentの、、、
      • 位置
      • 速度
      • 大きさ(形がランダムな箱)
    • 視界は135度(視界外の物体や他agentの情報はマスキング)
  • 残り準備時間

  • agentが取れる行動

    • 自身が動く:x, y軸で離散化された力とz軸方向のトルク
    • 物体を掴む or 離す
    • 可動な物体を固定する(最初に固定したagentのみ固定解除可能)

4. 方策の最適化

  • セルフプレイで学習される
  • 1つのagentが学習するネットワークは2つ
    • 方策ネットワーク:ある状態で、とるべき行動を推定するネットワーク(正確には分布)
    • criticネットワーク:割引報酬和を予測するネットワーク (Q値とかのこと)
  • 方策ネットワーク
    • Proximal Policy Optimization (PPO):方策勾配法にKL情報量の制約をかけたTRPOに対し、さらに方策の更新量の項にclipをかける手法
    • Generated Advantage Estimatio (GAE)(一般化報酬):どう説明するべきか分からないが、TD-ラムダっぽい目的関数に変更する手法
  • 分散学習
    • 学習時には中央集権で各agentの履歴を元にに学習
  • ネットワークは下図
    • 各要素をembedding化
    • agentから見えていない要素のembeddigはマスキング
    • concatしてself-attentionレイヤーに突っ込み、poolingしてLSTM f:id:pira_nino:20200330142044p:plain

気になったこと / メモ
ネットワークは単純だが、ここにもattention登場してくるのか、、、、

5.自動カリキュラムと創発的行動

  • 上記6つの戦略の学習は、Multi agentが道具を使ったりなど勝手に創発的に学習が行われている
  • それぞれの戦略を学習するのに、数千万epidodeかかったことが書いてある
  • チームプレイを学習した(隠れる側1人のときよりも、2人, 3人チームにすると、箱サーフィン防止のための箱をロックする個数が25, 36%up )
  • 隠れる側と見つける側の相互作用で創発的戦略が生まれる(例:見つける側がスロープの移動と使用を学習すると、ゲームのメインフェーズでのスロープの動きが増加し、「箱サーフィン」を学習すると、ゲームのメインフェーズでの箱の動きがわずかに増加)
  • バッチサイズを大きくすると、学習効率がよくなる(8K、16Kでは収束せず)
  • 学習中に環境を変えることでロバストな学習ができた

6. 評価

  • 単純に報酬の履歴を見ることは、エージェントが均等に学習しているかの評価を示せないので不十分な評価指標

vs 内発的報酬

  • カウントベースの内発的報酬を与える解き方を行うと、1agentの時には箱の移動が最大になるが、2-3agentにすると移動が大幅に減少する。これは探索空間が大きくなりすぎるとagentが探索すべき次元を探すのが困難になり、カウントベースの内発的報酬の限界があることを示している。
  • また、RND(ランダムなターゲットネットワークの出力との差内発的報酬にする手法)を使うと若干良くはなる。

かくれんぼを事前学習とし、新しいタスクにfine-tune

  • かくれんぼで学習されたネットワークを用いて他タスクをfine-tune
  • 「認知/記憶タスク」と「操作タスク」の2種類のどちらかに分類される5つのタスクを準備(タスクの詳細は付録C参照)

    • 認知/記憶タスク

      • Object Counting:固定されたagentが、左右のステージ外まで動く箱を見て、左右にそれぞれ何個の箱が移動したかを数えるタスク(LSTM層から(多分)Denseで連続値を出力するネットワーク)
      • Lock and Return:6このランダムな部屋のうち1つからスタートしたagentが部屋外の箱を固定した後、同じ部屋に戻って来れるか
      • Sequential Lock :3つの部屋にランダムに配置された総計4つの箱を正しい順番通りにロックする(正しい順番を見つけることを学習)(部屋間の移動はジャンプ台を使う)
    • 操作タスク

      • Construction From Blueprint:8個の箱を1-4箇所設置されたtarget siteに配置する
      • Shelter Construct:3つの細長い箱、5つの立方体の箱を使って、1つの動かせないシリンダーの回しにシェルターを作る
  • 結果

    • 比較手法

      • (メイン)かくれんぼで学習済のネットワークを元にfine-tune
      • ゼロから学習
      • カウントベースの内発的報酬
    • かくれんぼを事前学習としてfine-tuneすると比較手法に比べ、、

      • 精度微向上: Lock and Return / Sequential Lock / Construction From Blueprint
      • 精度微低下:Object Counting (セロベースは精度低)
      • 最終的に同精度だが、遅い:Shelter Construct
    • 考察

      • 精度が向上したタスクはかくれんぼで学習した特徴量が有効であった
      • 低精度のタスクには、かくれんぼで学習した行動の応用(転用)が難しいと考えれる
      • →ある環境で訓練されたポリシーから別の環境へスキルを効果的に再利用する技術の開発の必要性を示している
        • さらに将来の環境が多様化し、agentがより多くの文脈でスキルを使用しなければならないようになれば、このように他タスクへの応用性を評価することで、より一般化可能なスキル表現を評価できる可能性
      • 例えばかくれんぼの解釈可能な6段階の学習の各段階を初期値として、Lock and Returnにfine-tuneさせることで、かくれんぼの学習が汎用的な学習を行えているかの評価が行える。
        • 付録A.5が面白かったので触れます
          • Lock and ReturnはPhase6を初期値とするとPhase1を初期値とした際よりも大幅に向上
          • Object CountingはPhase1がベストで、他Phaseでは全然ダメ。つまり物を数える能力は忘却されている可能性
          • 操作タスクはPhaseに依存しない。(へー。汎化性が学習されていないのか、Phase1で十分学習されていたのか、簡単なタスクだからだろうか?)

f:id:pira_nino:20200330181139p:plain

気になったこと / メモ

  • fine-tuneさせて、他タスクに適用できるかでモデルの評価を行うのは面白い
  • NLPや物理環境化での強化学習といった「人間の感覚」や「実世界で一般的な動作か」を評価する上で、fine-tuneで評価を行うことに勝手に納得した
    ( Bertも「pre-trainさせたモデルを他タスクにfine-tuneしても汎化的に精度が高くて凄いね」って主張しているし、まぁ自然なアプローチ)

7. ディスカッション / 今後の課題

  • 単純なルールのゲーム、マルチエージェント競争、標準的な強化学習アルゴリズムを用いてagentに複雑な戦略とスキルを学習させることができることを、大規模で実験で実証した
  • 評価指標とし、転移学習を用いたアプローチを提案した。
  • これらの結果は、マルチエージェントの自動カリキュラムが物理的に根拠のある人間に関連した行動につながることを示した。
  • 今後の課題
    • 莫大なepidsode回学習させたが、更に効率的な学習サンプルに取得方法
    • 箱サーフィンなど、物理シユレータの穴をついた行動をしてきたので、シミュレーターの改修

論文を読んでみて感想

論文のタスク自体は人間にも直感的で非常に面白かったです。また、デモ映像として公開されているyoutubeが可愛い&最後が意味深で凄く好きです。

また、毎回強化学習の論文を読むたびに

  • じゃぁ何に使えるの!?
  • 計算時間エグい

と思います。まだまだビジネス適用は難しい分野ですね。。。