AppleのFerret-UI

こんにちは、品川です。実益を兼ねた趣味として、気になった話題をブログにまとめる趣味を始めようと思います。今回はAppleのFerret-UIです。

Ferret-UIの概要

Ferret-UIはMobile Web UIのためのMLLMです。記事にとりあげられていたのを見かけました。注目が集まっているようです。

www.itmedia.co.jp

gigazine.net

原著はこちら。

arxiv.org

要点:

  • FerretAppleが以前に発表したMLLM)がベース
  • 画像をサブ画像に分割して処理する
  • 訓練データ:250K
    • iPhoneAndroidのUIスクリーンショットを利用
      • Androidのは既存のRICO datasetのサブセットを利用
    • Spotlightという先行研究 (Googleが出したMobile UI Understanding論文)のタスクを流用。会話的なQAペアに
      • screen2words: 画面に映っている内容(どんなことをできるUIなのか)の要約
      • widgetcaptions: 画面上のオブジェクトの機能の説明文を生成
      • taperception: tappability(オブジェクトがタップ可能かどうか)の認識
      • 自然言語からコマンドの位置をあてるタスク(Command Grounding)は本論文では別途Grounding tasksとして作っている模様
      • 上記は全てGPT-3.5 Turboで作成
      • Elementary Tasks: 画面上のUI要素についてのタスク群。
        • reffering系(ここではbboxで指定されたものを答えるタスク):OCR, icon recognition, widget classification
        • grouding系(指定されたものをbboxで出力するタスク):widget listing, find text, find icon, find widget
      • Advanced Tasks:LLaVAを参考にVisual Instruction TuningのデータをGPT-4を使って作成

Advanced Tasksの作成方法(論文Fig4より引用)

Advanced Tasksの作成方法(論文Fig4より引用)

  • 計算資源:Ferret-UI-baseは8xA100で1日、Ferret-UI-anyresは3日で学習できる
  • 評価方法:
    • Public Benchmark from Spotlight
    • Results on Elementary UI Tasks
    • Results on Advanced Tasks

感想

  • Appleの人が書く論文はしっかりしたものが多いので好き
  • GPT-4でデータ作成は一般的な感じがあるが、GPT-4一辺倒でも偏りが出てしまう懸念はありそう?

参考:Ferretについて

github.com

  • 思想的にはKosmos-2と同じで、物体の位置情報をbounding boxで吐き出せるように位置情報に特化した学習がされている
  • 学習済みモデルには7Bと13Bがある
  • Ferret-Benchというベンチマークも提案しているので要チェック

NAIST助教を退職してSB Intuitionsで働き始めました。

こんにちは、品川です。大学教員になって約3年半、ボスの定年退職に伴い、異動することにしました。 新しい所属先はSB Intuitionsです。民間企業ではありますが、研究機関登録もされていて科研費もそのまま移すことができます。まだ学生の投稿中の論文誌が残ってたりするのでありがたいですし、色々と面白いことができそうでワクワクしています。

アカデミアから民間に移った理由はいくつかありますが、雑に箇条書きにすると

  • アカデミアの世界しか知らないことにリスクを感じたから
  • 情報系のポストが増えていて、新しいことにチャレンジして失敗しても教員として戻れる可能性がそこそこありそうだから
  • 大量のGPUをぶん回したい気持ちが高まっていたから
  • 日本の中でも最高の教育を提供する研究室に所属して教育の可能性や限界を思い知ったから。結局教員が多忙過ぎるし、教育がスケールしないのが問題(私が成長させたいと思う「できない学生」への教育コストは学生の能力が低いほど際限なく高まる)
  • 品川の目指すものは「一人でも多くの人が幸せなD進生活を営むこと」なので、教員として活動を続けるよりも基盤モデルにベットする方が見込みがあると感じているため

とこんな感じです。

NAISTは素晴らしい環境でした。学生から教員になってみて、教員の先生方は思った以上に学生のことを考えて施策を練ってくれてることが分かりましたし、事務の方々の処理能力の高さには毎度頭が下がるばかりでした。食堂やコンビニの方々、清掃員の方々はよく挨拶をしてくださいましたし、NAISTで過ごす生活は快適そのものでした。

およそ9年間のNAIST生活で学んだことを挙げればきりがないので、また次の機会に少しずつ書いていこうかと思います。これまでありがとうございました。今後の品川の活躍にご期待ください。

「頑張らない学生指導」を頑張ろう

こんにちは、品川です。大学教員になって約3年、今の所属はボスの退官に伴い、今年度で終了になる予定なので、備忘録としてぽつぽつと反省をまとめていこうと思います。今回は大学教員としての仕事の仕方についてです。

せっかく大学教員になるのだから、学生ファーストで少しでも学生に良い経験を積んでもらって能力を伸ばして成果もたくさん出して修了してもらいたい、あわよくばD進してもらいたいという思いでここまでやってきました。結論から言うと道半ばで、ようやく大学教員の呼吸にも慣れてきたという感じですが、思ったような方向に結果は伴わなかったので大学教員の難しさを思い知りました。

機械学習ニューラルネットワークと異なり、ナマモノの人間ニューラルネットワークを相手にする仕事なので、なかなか思うようにはいかないものです。それなりに楽しい期間でしたが、全体としては反省点が多かったです。

一番の反省点は学生指導を頑張り過ぎたこと

学生ファースト(ここでは学生の能力を伸ばし、研究成果をあげて未来の選択肢を広げること)を達成することと、学生指導にどれだけ時間を使ったかは同値ではありません。直接的な指導は教員の可処分時間に制約されるので、限界もあり、あまり効率が良くないです。また、指導の分だけ学生が伸びるわけでもありません。

私が2021年4月に初めて学生を持った時の方針は、最初のうちにエフォートを割いて研究テーマを早めに決定できれば後々楽ができるという考えでいましたが、結果的に学生は私が強みを出せない領域で研究を始めてしまい、まあ学生ファーストだよなと学生の意向を汲んだ結果、班全体の歯車が狂って学生も無駄に苦難の道を歩むことになり、あとからあとからトラブルが増えてごりごり私の可処分時間が削られました。

やはり学生のテーマというのは、学生の興味関心もある程度は重要ですが、学生のレベルと研究室の事情(研究費の出せるプロジェクトに紐づけられるかどうか、指導教員が強みを出せるところか、など)を鑑みて決定すべきで、学生ファーストを達成するにはまず教員ファーストでなければならないという悲しい現実に直面しました。

実のところ、当時私は学生の研究テーマを私の意向に合わせて制約させてもらう予定だったのですが、大学教員になりたてで、初めて学生を持つということもあり、ボスの介入も受けてこの状況に持っていかれた感じです。ここでボスは私との約束を反故にしているので、今になって思うとここはボスに色々交渉する余地のある場面でしたが、博士後期課程時代の恩義もあったし、なんかあったら助けてくれるかあと少々楽観的に受け入れてしまいました(結果ひどい目にあった)

ちゃんと自分がプロとして仕事を遂行する上では譲ってはならないラインがあり、時には上司に対してNoを言わなければならないことを学んだ次第です(私は体育会系出身なのでNoを言いづらい性分、そしてボスは私が断れないマンだったのを分かってて、私はうまくしてやられた気がします。悔しみ・・・)

頑張らない学生指導をするために

単純に手を抜いただけでは、結局勝手に成長できる学生が成長できるだけで、そうでない学生を見捨てることになります。そうなっては自分が教員になった意味がありません。私が教員になったのは少子化の中にあって未だに本国における研究室教育が前時代的な放置と選別に基づいていることに少なからず憤りを覚えていて、それをどうにかできんのかという気持ちがあったからです。

ではどうすることになるかというと、上手に手を抜けばいい、つまり直接的な指導を頑張らなくても最大の教育効果を目指すことになります。

この発想で動けるようになってきたのは2023年3月くらいだと思います(それ以前は地獄を見ていて生きてるだけで手一杯でした・・・)

やってよかったこと

研究班ミーティングを二週間に一回から一ヶ月に一回に減らした

研究班ミーティングはほぼボスが教育してる感を出すためになっていて形骸化していたので、思い切って半分にしました。代わりに、個々の研究の問題解決は個別ミーティング30分/週と、日々研究室に来る学生に声をかけてこまめに解決するようにしました。(必然、研究室に来る学生の方が進捗が良い感じになりましたが、これは致し方ありません。ログインボーナスみたいなものです) 結果、学生が準備に消耗する時間が減ったので進捗ペースが良くなりました。

『卒論・修論研究の攻略本』を読む会

研究の問いの立て方や問題の絞り方にはコツがあり、経験だけでは補えないものがあります。研究のノウハウ本は学生が研究で壁にぶつかっている時に解決のための糸口にもなるので、一通り押さえていてもらいたいのですが、不思議とこういうノウハウ本は読もうという発想にならないようです。学生にとっては半強制的に読む機会があって初めて良さがわかる本というのがあるようです。残念ながら。

研究ノウハウ本の例:『卒論・修論研究の攻略本』 https://www.amazon.co.jp/dp/462794361X

あと、私は学生時から個人的に研究のためのWeb良資料をまとめています(現在もたまに更新してます)

github.com

研究に興味があれば一通り見るだろうという仮定が私の中にありましたが、こちらもやはり、自主的にこれらの資料の中から自分に合うものを探して選べる人は少ないようです。悲しい。

そこで、半強制的に読ませるために読み会を開きました。 『卒論・修論研究の攻略本』は1章が一日分となっています。一日分30~40分でひと段落ずつ音読して読みまわし、一日分を読み終わったら議論20分を行うことを5回分やれば5時間で完成です。

学生からの反応は上々でした。「もっと早く知りたかった」と・・・(これからは自主的に読むんやで・・・)

原稿テンプレートの作成

学生に一から原稿を書かせると壊滅的な文章が出てきて何から指摘して良いか頭を抱えます。ChatGPT時代にあっても論文のように論理的な文章を書くための型や作法を学んでおくのは重要です。

しかし、こういうことはいざ学会原稿を書く段階でないと身に付けようというモチベーションが湧かない問題があります。そこで試して良かったのは、学会原稿の書き方をまとめた原稿を書いたことです。実際の原稿も参考までに置いておきます。

※MIRU2023のフォーマットをお借りしてます。

www.overleaf.com

この論文書き方原稿は勢いで書いたところがあり、決して完璧なものではありませんでしたが、この論文書き方原稿を書いたことで、致命的なコストのかかる指摘や修正は避けることができました。体感だいぶ原稿を読むのが楽だったと感じます。

査読型論文読み会

普通の論文読み会と異なる読み方として、査読者の視点で読むことで論文を書く際にも査読者の視点で論文を書けるような仕掛けをつくりたいと思い、やってみた試みです。 実際のフォームのコピーも参考までに載せておきます。 ※Googleフォームの仕様で編集者ビューを見せるには編集権限を与える必要があるようで断念しました。ご了承ください。

docs.google.com

続けると効果があると思っていますが、これは一回2論文しかできませんでした。 その回は敢えて国際会議のBest paper nomineeを選びました。ツッコミを入れることで、国際会議で評価されている論文が必ずしも隙が無くて完璧というわけではないことを示すことを狙ったものですが、悪くは無かった思います。 将来的には内部査読を学生同士でできるようになってくれると嬉しいなとも思ってますが、博士後期の学生もいないと少々イマイチな感があります。研究室横断でできたら良かったのかも?

やったら良かったこと

サーベイやネタ出し、勉強会をイベント化する

学生に「お前ら助け合えよ~」と言っても自主的に助け合える学生は少ないので、そういう場合はイベントとして設定して半強制的に助け合えるようにする場を仕掛けるのが重要なようです。『卒論・修論研究の攻略本』を読む会では特に重要性を感じました。

一人でサーベイしているとどうしても甘さが出ますが、複数人で肩を組ませてスクワットさせるがごとく、短期的ゴールとして強制的に○本読むことを実行させて、定期的に一本一枚スライド2, 3分くらいで何本か紹介させると歩調を揃えつつ本数を読めるようになると思いました。研究発表では口頭にしろポスターにしろ短く要点を紹介することが求められることがありますが、これは練習しないとできないので、その発表練習にもなるはずです。

また、ネタだしも学生間で組を作り、自由に議論させて1時間後に発表させるというのを繰り返しても良かったと思います。その間教員は横で仕事をしていても良いし、議論に加わっても良いと思います。YANS2023のハッカソンやMIRU2023の若手プログラムはそんな感じで面白いアイデアが出ていたので、もっと研究室でも活かせば良かったなと思います。

修士の学生には、重要技術に馴染んでもらうというのも重要だと思いました。最近は実装が公開されていることも多いので、既存実装で良いので、自分でまず体験して遊んでもらう形の勉強会を開くと技術に対する心理障壁が下がったかなと思います。強化学習や最適輸送を使いこなして欲しい人生だった・・・

まとめ:人間もPromptingが大事

結局何が言いたいかと言うと、人間ニューラルネットワークにもPromptingが大事だってことです。ただ、指示をするだけではうまくいかないことも多いので、最初は場を設けてPromptとするのが大事なのかなと思いました。

※ただ、向かない人もいそうなので上記のような取り組みは原則希望制にした方が良いかもしれない

Slack botとしてChatGPTをお招きしてスレッドに返信してもらう

こんにちは、品川です。

何番煎じかわからないですが、ChatGPTを研究室のSlackに入れたいと思って少し色々といじっていました。とりあえず目的のものはできたので備忘録がてらbot作成についてまとめておきます。

仕様

メイン:

  • botはGASとSlack API、ChatGPT (gpt-3.5-turbo) APIで実装 (GPT-4 API欲しい・・・)
  • botは他のユーザからメンションされた時だけ応答
  • 応答はスレッドに投稿
  • スレッドが存在しない場合はスレッドを新規作成して応答を投稿
  • スレッドが存在する場合は、スレッドの対話履歴を抽出
  • ChatGPT APIは対話履歴を入力として応答文を生成する(スレッドが存在しない場合はユーザの入力のみ)

動作例は下のような感じです。簡単な計算を行ってから会話をまとめてもらう操作を依頼して、履歴が次の発話に継承されているのを確認しました。

動作例:簡単な計算を行ってから会話をまとめてもらう操作を依頼
動作例:簡単な計算を行ってから会話をまとめてもらう操作を依頼

細かい点:

Slack botとGASの準備

基本は下記のサイトに従って進めればOK。
【忘備録】SlackチャンネルにChatGPTを組み込んでみた!【Google Apps Script】 | 情報学部生の気ままなブログ
※ただし、上の記事にあるSlackAppは結局使わないで実装しました(SlackAppでスレッドに送信する方法が調べてもよく分からずハマったため・・・)

OAuth Scopeは以下のBot Token Scopesが必要です。

  • channels:history (スレッドの読み込みに必要)
  • chat:write (応答に必要)
  • users:read (ユーザIDをユーザ名に変換するのに必要)

※更新したらbotの再インストールの警告が出ます。再インストール(Install Appにある「Reinstall to Workspace」)をしてようやく権限が更新されるので注意。

GASでの実装

gist.github.com

これでGASのコードを置き替えて再デプロイすれば動きます。

動かない場合:

  • GAS側の設定
    • 設定の「スクリプトプロパティ」としてopenApiKey, slackBotId, slackBotTokenがきちんと設定されているか
    • デプロイの方法が間違ってないか
  • Slack API側の設定
    • OAuth & PermissionのScopeが反映されているか
    • Event Subscriptionはonになっているか
  • Slack側の設定
    • 「チャンネル名」→「インテグレーション」→「アプリを追加する」でbotを動かしたいチャンネルに登録しているか

感想

有志の方々が先行して記事をまとめてくださってたのでだいぶ助かりました。GASはあまり使い慣れてなかったので良い勉強になりました。とはいうものの、SlackのAPIの仕様で思ったより苦戦しました。 私はまだ諸般の事情でGPT-4に課金して無かったのでgpt-3.5-turboで聞いてみたりしたのですが、SlackのAPIのスレッド周りの仕様についてのWeb上の記事が比較的少ないせいか、結構トンチキな提案をされて逆に振り回されてしまった感じです。結局公式のリファレンスを読むのが一番早かったというオチでした。

参考

GASの利用準備+実装

実装

論文紹介:TISE: Bag of Metrics for Text-to-Image Synthesis Evaluation (ECCV2022)

こんにちは、品川です。この記事は画像生成AI Advent Calendar 2022 14日目の記事です。

adventar.org

ECCV2022の論文をサーベイしていてテキストからの画像生成の評価指標の研究を見つけて面白そうだと思いまして、この機会にまとめてみたので紹介したいと思います。

まとめ自体はspeakerdeckにあげたので、こちらを見ていただければと思います。

最初はてっきりDiffusion系で比較しているのかと思ったらまさかのGANこれくしょんでした。ECCV投稿締め切り当時はまだGANも幅を利かせてたんでしたっけ?隔世の感・・・

読んでみたらちょっともやっとするところもありましたが、テキストからの画像生成の評価はまだまだ手薄で、せいぜいFIDやR-precisionにばかり頼っているところがあるので、希少性が評価されたのかなと思います。

Twitterでも最近話題になっているのを目にしますが、画像生成の評価は今後もますます重要ですね。どんどん盛り上がっていったらいいなと個人的には思います。私の学生さんもテキストからの画像生成の評価関連でぼちぼち学会投稿を狙っているので、楽しみにしていただけたらと思います(適度なプレッシャーをかけていくスタイル)

自己紹介とメタ視点の研究効率化Tips(研究生活のデザイン)について

こんにちは、品川です。
本記事は研究コミュニティ cvpaper.challenge 〜CV分野の今を映し,トレンドを創り出す〜 Advent Calendar 2022の2日目の記事です。

adventar.org

自己紹介

はじめての方へ向けて自己紹介です。品川政太朗と申します。奈良先端大で助教をしています。 大好物はVision and Languageと対話システムです。学生時代は自然言語の対話による画像編集について研究をしていました。今も学生さんと一緒に研究を進めています。

Vision and Languageも対話システムも、近年のGPT-3をはじめとした大規模言語モデルの登場に端を発して大きな盛り上がりを見せている研究分野で、ご存じの方も多いかもしれません。 私は特に、これらの分野の両方にまたがったシステムに興味があります。 Vision and Languageという分野は、画像をはじめとする視覚情報と、自然言語のテキストで表現される言語情報をいかに紐づけて課題を解決するかに関心がある研究分野です。これができるようになると、画像中の情報をテキストで表現したり、逆にテキストを画像で表現したりといったモダリティ間の変換や、画像を理解する手段として言語情報を使う、言語を理解する手段として画像情報を使うといったことが可能になります。 私が特に面白いと思っているのが、画像と言語が一対一対応しないという点です。画像を完全に説明できる説明文はなく、同じテキストでも複数の画像が説明文として適するという場合が存在します。 加えて、画像情報も言語情報も多様性があり、個人や大小の様々なコミュニティによって、画像とテキストがどのように紐づくか・紐づくべきかは異なると考えられます。たとえば、例の和菓子を御座候(ござそうろう)と呼ぶコミュニティで「回転焼き」や「大判焼き」などと呼ぶとユーザから不興を買うと容易に想像できると思います。 このような問題を解決するために、コミュニティに根差してユーザに利用してもらいながらユーザやコミュニティに逐次的に適応する仕組みというのが必要だと考えています。 すなわち、人から指示を受けた機械が、必要に応じて自分から人に確認をしたり、新たに情報を求めたりといった対話のやりとりを通して人と意図を擦り合わせ、人の指示の意味と実世界の意味を結び付ける方法論についての研究が私の研究動機です。 詳しくは、12/17(土)のLanguage and Robotics研究会(zoomにて開催、参加無料)でも話すので、ご興味ある方はぜひいらしてください。

langrobo.connpass.com

私が過去に発表した資料などはこちらから見れますので、ご興味ある方は参考にしていただければ幸いです。

sites.google.com

speakerdeck.com

メタ視点の研究効率化Tipsとは?

さて、早速本記事の本題に入りたいと思います。「メタ視点の研究効率化Tips」とは、「研究効率化Tipsを実践するためのTips」くらいのニュアンスです。 研究効率化Tipsと言うと、新しい便利なツールを使う方法を思い浮かべると思いますが、研究活動は社会的な営みでもあるので、自分をコントロールしたり、他人と協調したりといった要素も重要です(が、この観点は研究室でもわざわざ指導されることがない場合が多いと思います) メタ視点の研究効率化Tipsでは、このような社会的な営みの中での研究生活を充実させることで、研究を順調に進めながら研究生活を楽しめるようになるコツをいくつかお伝えできればと思います。主に学生さんを想定して、研究生活というよりも研究室生活に焦点を当てます。

研究室生活の概要を知って目標を立てる

研究室生活を充実させるためには、まず「研究室生活ってどんな感じで進むの?」という点を理解して、研究室生活を自分の人生に最大限活かす方法について考えるのが肝要です。

①知っておこう:研究室教育は実践の場

研究室教育というのはOn-the-Job Training (OJT)が中心であり、研究指導も研究室生活指導も、最初に体系的なレクチャーを受けられないまま、実践を通して学ぶことになる研究室も多いです(※筆者の聞く限りでは)。 研究室が提供してくれるのは主に、研究する場、研究する人が集まる場や機会、要所要所でアドバイスをくれる教員という存在であり、研究活動がどのようなゲームなのか理解するには自分から積極的に情報を収集する必要があります。

参考:2020.06.01 M1勉強会 論文の読み方・書き方・研究室の過ごし方 P.50

speakerdeck.com

研究というゲームの説明は『卒論・修論研究の攻略本』という本で分かりやすく説明されているので、ぜひ購入して読んでみると良いと思います。

www.morikita.co.jp

研究に対する心構えをより詳しく知るには、以下の本が参考になります。ぜひ調べてみてください。

  • 『妄想する頭 思考する手―想像を超えるアイデアのつくり方』
  • 『独創はひらめかない―「素人発想、玄人実行」の法則』

②知っておこう:研究室生活は転用可能な技術(transferable skills)の塊

研究というプロセスはあらゆる問題を解決するのに汎用的に当てはめることができます。ゆえに大学では学生の問題解決能力を育むために研究というコンテンツを用意しているわけです。研究を一通りこなすのに必要なスキルは様々であり、多くのスキルは他の職種にも転用可能です。将来自分がなりたい職種が研究職でない方でも、どうせ修了して学位を取得するために必要ならば、就職時にスタートダッシュが切れるように研究室生活の中でスキルを鍛えておくか、と思っておくと身が入るかもしれません。

参考:2020.06.01 M1勉強会 論文の読み方・書き方・研究室の過ごし方 P.51

https://files.speakerdeck.com/presentations/f7601b20488a42ba8b94dd5e9d1b26b7/slide_50.jpg プロジェクト炎上について補足*1

参考:2020.06.01 M1勉強会 論文の読み方・書き方・研究室の過ごし方 P.52

https://files.speakerdeck.com/presentations/f7601b20488a42ba8b94dd5e9d1b26b7/slide_51.jpg

③実は裏テーマとして「自分をコントロールする技術の研究」が重要だったりする

研究テーマというのは個々人の能力に応じて様々なテーマ設定が可能なため、実は学生時代の研究室生活において鬼門になるのは個人の数学的素養やプログラミングスキルなどよりも、頑健な研究室生活を送れるかどうかにある、と私は考えています。「頑健な研究室生活」というのは、たとえば研究がうまくいかなかったりショックな出来事があって肉体的・精神的に落ち込んでも大きく崩れない、崩れてもすぐ立て直せる研究室生活を指します。

研究室生活(研究生活)というのはいやらしいもので、凹む機会や体調を崩す機会が日常的にやってくる世界です。 研究がなかなかうまく進まなかったり、自分のやっている研究が他の研究機関から論文として発表されたり、教員からきついコメントをもらったり、様々です。 普通の感覚であれば失敗なんてなるべくしたくないと思いますが、研究室生活では失敗を繰り返しながら成功に近づいていくことになります。 失敗するごとに成功に近づいていると喜ぶのが研究者と呼ばれる人々で、研究室生活を始めた学生さんの中にはカルチャーショックを受けてしまう人もいるかもしれません。

加えていやらしいのは、研究室では研究指導はしても研究室生活指導はあまりしない(忙しすぎてできない?)という点があります。 研究室によってはコアタイムを設けることで学生さんの研究室生活にある程度の制約を設けている場合もありますが、万人に対して同じ施策が有効とはならないので一長一短です。 教員も求められれば研究生活についてのアドバイスはできるものの、究極的には自分に適合する研究室生活は自分で見出していく必要があり、この必要性にいち早く気づけると順調な研究室生活を送れる可能性が高まります。 そう、言うなれば、研究室生活の裏には外に出すことはない裏研究テーマ「自分をコントロールする技術」があると考えると良いかもしれません。 自分をコントロールする技術はこの先研究職になっても他の職種に就いても応用が利く転用可能な技術(transferable skills)として非常に重要なので、そんな意識まるでなかったよ、という方はぜひ意識されると良いかと思います。

裏研究テーマの実践:相対化で自分の強みと弱みを見つける

研究というプロセスはあらゆる問題を解決するのに汎用的に当てはめることができます(ゆえに大学でも教育の一環として学生に研究をさせるわけです)。 もちろん裏研究テーマ「自分をコントロールする技術」を進める方法も、通常の研究と同じように進めることができます。少々異なるのは、自分のために行うことなので、論文として発表する必要はないという点ですね。

さて、研究のプロセスは、調査→仮説と研究計画の立案→仮説の検証→結果の考察に分かれます。「自分をコントロールする技術」について研究する際の調査の秘訣は、相対化です。 相対化とは、他者と比較するということです。え、「自分に適合する研究室生活は自分で見出していく」んじゃないのかよ、と思う方もいるかもしれませんが、自分の中に絶対的な指標を持ち込むのは大変なので、他者と比べて自分が何に興味を持っていて、何を困難に感じずにできるかを見出せると仮説を立てやすいわけです。

研究室には先輩や同期、後輩がいたり、他研究室と交流する機会があれば、雑談の中から何が得意か聞き出したり、進捗報告や研究発表から何が自分と違うのかを観察してみると良いと思います。

私の場合は、「他の学生よりも興味の範囲が広いなあ(広すぎるなあ)」「サーベイが苦にならない(むしろサーベイしすぎる)っぽい」という傾向があると感じていました。これらはよく「勉強好きだけど研究できない人」を揶揄する表現でして、私も自分でそういう面がある点は自覚していて、自分は研究向いてないのでは?、と考えることもありました。 しかし、良い面もあります。たとえば、コンピュータビジョンや自然言語処理、ロボティクスなど様々なコミュニティとつながり、様々な視点から研究を考えることができる点です。

研究という世界は思ったよりもずっと懐が深く、ある面での弱みは別の面だと強みになり得ると思います。 そう思ったきっかけは、自分の興味が広すぎることをボスに相談してみたときでした。ボス曰く「色々な領域に興味を持てるという資質は武器になる。学生の時にはあまり役に立たないかもしれないが、PIになった時にその資質が生きてくる」とのことでした。 このできごとからの学びは、資質・傾向の良し悪しを短期的に判断するのではなく、長期的な視点で活かすには自分を世界の中にどう位置づけていけば良いかを考えていけばいいのだ、ということです。 ある資質や傾向が今は不利でも、状況が変われば、捉え方が変われば、その資質や傾向を活かして強みにできる可能性があるはずです。「自分をコントロールする技術」を研究することは、これらの可能性を見つけていくことにもつながります。

性格診断やストレングスファインダーも役に立つ

自分の傾向を把握する方法として、16Personalitiesのような性格診断やストレングスファインダーも役に立ちます。ぜひ一度やっておくと良いです。

ちなみに私の16PersonalitiesはENFP-Tで、広報運動家です。傾向は好奇心・直感が先に立ち、衝動的。注意点は飽き性、手を広げすぎて収集つかなくなりがちなこと。世が世なら海賊王を目指していそうなアレです。

ストレングスファインダーでは5つの特徴的な資質を見ることができます。私の場合は以下の5つでした。

  • 収集心:知りたがり屋の傾向。
  • 内省:考えることが好きな傾向。確かに、とりわけ思考が自分の内面に向かうことが多いので、人の話を集中して聞くのは苦手な面があります。
  • 学習欲:学ぶことが好きで、結果より学ぶプロセス重視な傾向。
  • 回復志向:問題を解決することが好きな傾向。確かに、自分が成功することよりも、困ってる他者を助けて喜んでもらえることの方が好きです。
  • ポジティブ:基本的に楽天的で、どんな状況にもポジティブな面を探そうとする傾向。

これらの傾向を参考にしながら、自分にはどういう研究スタイルや研究生活が合うのか、仮説を立てていくと良いと思います。

方法論の調査

自分をコントロールする技術を研究する上で、先人が残している方法論は検証候補としてとても参考になります。 常日頃から情報を収集してメモしておくと良いでしょう。 たとえば、Web上で見れる資料だと以下のような資料があります。

www.200kounen-training.com

  • 楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜

www.slideshare.net

www.slideshare.net

  • cvpaper.challenge 研究効率化 Tips v2

www.slideshare.net

  • 2020.06.01 M1勉強会 論文の読み方・書き方・研究室の過ごし方(再掲)

speakerdeck.com

実は、漫画家の方々が公開してくださっているTipsも研究者を目指す我々に大変参考になります。必要なメンタリティとかかなり近いです。たとえば、大塚志郎先生をご覧になってみると良いと思います。

twitter.com

「from:shiro_otsuka 漫画家志望さんへ」でtwitter検索してみましょう。

自分自身の身体的・精神的体調管理について、予防やもしもの時(体調を崩したり落ち込んだりした時)の対処を中心に調べると良いと思います(研究の効率的な進め方にも関わってくるところです)

  • 体調管理、スケジュール管理とか
  • 心構え、考え方とか

仮説を立てて検証する

良さそうな方法があれば、早速実践してみましょう。 これまでの経験や、性格診断やストレングスファインダーを利用して得た自分の傾向に照らし合わせて、できそうなものから始めても良いと思います。 検証期間は、設けられるなら設けた方が良いと思いますが、無理に用意する必要は無いと思います。 (仮説を立てて検証する方法や期間といったことも、自分に合った方法を見出していくつもりでいると良いと思います。

私の場合は、私は衝動的かつ飽き性な面があるので、とりあえず試して、途中でやらなくなって自然消滅することが多いです。 やらなくなったことに気づいた時が肝心です。「あ~~~なんて私はだめなんだ」と思ってたらそこで終了になってしまうので、「何が原因でダメだったんだろう・・・?」と考察を始めます。たとえば、スケジュールに週に2時間強化学習の勉強をする予定を立てて実践した時に、うまくいってなければ、「その時は別の仕事があった」「疲れて寝てしまった」とかが原因として挙げられるわけです。

ここで立てた予定を止めるという選択肢もありますが、どうしてもやりたいことならば別の方法を考えます。研究で言う提案手法です。 たとえば、「「強化学習の勉強をする」というのが具体的でなく、すぐに行動に移る気が起きなかったので、ページ数を指定してやってみるようにしよう」とか、「一人で行うのは飽き性の私には向かないから、他の人を誘って一緒に勉強会を行って半強制的にでも読む時間を作ろう」といった提案が考えられます。

あまりおススメしないのは、何も改善案を立てずにリトライして同じことを繰り返すことです。少しの工夫で良いので、失敗したら改善案を立てて繰り返していきましょう。改善案が思いつかなければうまくやっていそうな人に聞いてみるのも一つの手です。そのためにも、コミュニティのつながりは広く持っておくと良いと思います。cvpaper.challengeもぜひ選択肢に入れていただけると幸いです。

xpaperchallenge.org

*1:プロジェクト炎上は、自分の研究プロジェクトでも研究室のプロジェクトでも良いですが、締切近いのに間に合いそうになくてヤバイ!くらいの広めの意味です。目標を変更したり、アプローチを変えたり、対応力が求められます

著者陣の視点からVision Transformer入門の執筆の背景と書評を書きます

こんにちは、品川です。Vision Transformer入門という本の執筆に参加しました。いよいよ本格的な販売がはじまります。どんな本なのか注目してくださってる方もいらっしゃると思うので、著者陣の一人の視点から執筆の背景と書評を少しだけ書こうと思います。

gihyo.jp

執筆の背景

著者陣のうち、山本さん、Qiuさん、私はcvpaper.challlengeで2021年4月にTransformerメタサーベイを行ったメンバーでして、cvpaper.challlengeのボスである片岡さんからお声がけいただきました。

www.slideshare.net

Vision Transformer入門の一部は、このメタサーベイVision Transformerに合わせて大幅に加筆・再編した版的な位置づけにあるとも言えます。もっとも、上記のメタサーベイを公開してからのVision Transformerの進展はめざましく、継続的にサーベイをして加筆する羽目になったのでほぼ別物です。

過去のスケジュールを確認したところ、執筆のお話をいただいたのは2021年の12月ごろだったようです。正直私よりもっと適任者がいるのでは・・・という気持ちがあったので少々迷ったのですが、メタサーベイで乗りかかった舟ではありましたし、私自身研究でVision Transformerを使っていて、当時思ったように性能が出ないことが多かったのと、学生さんを適切に指導するためにも一度本格的に知見をまとめる必要性があったことから著者陣として参加させていただいた次第です。(実際、ものすごく勉強にもなりました。執筆はイイぞ)

私の担当した7章8章はTransformer、Vision Transformerのメタ分析*1的な章になっています。執筆に参加する前からある程度覚悟はしていたのですが、こんなに短期間に論文が大量に出て知見も混沌としている分野を把握してまとめるというのは結構な苦行でした。この苦行を同じように経験する人が少しでも減るといいな、私はそんな気持ちを込めて本書の執筆に携わりました。日本の皆様がVision Transformer周りで消耗しなくて済むように少しでも貢献できたならば幸いです。

書評

私から見た、各章の見どころについて紹介します。

第1章 TransformerからVision Transformerへの進化

自然言語処理から始まったTransformerからVision Transformerの最近の展開(動画や基盤モデルなど)までの進展を総括して紹介している章です。時事的なニュースなども盛り込まれていて、Transformerがどのように発展し、影響を与えてきたのかが概観できます。執筆担当者は早稲田大森島研で博士を取られた山本さんです。

第2章 Vision Transformerの基礎と実装

Vision Transformerの中身についての詳細な実装付き解説が行われている章です。見どころはその説明の丁寧さで、ゼロから作るVision Transformerと言っても過言ではないです。執筆担当者はomiitaさんこと徳永さんです。Qiitaの論文解説記事にお世話になっている方も多いのではないでしょうか。

第3章 実験と可視化によるVision Transformerの探求

Vision Transformerを実際に様々な条件で学習させて評価するところまでサポートしているチュートリアル的な章です。実際に手を動かして追試しているんですよ、ヤバいですね(語彙力喪失)。これは本書でないとお目にかかれない見どころなので、ぜひ手にとって結果を確かめてみてください。実験設計から位置埋め込みや判断根拠の可視化まで一通りの実験プロセスが丁寧に説明されてるので、研究室に配属されたばかりでこれからVision Transformerを使い始める学生さんは必見です。執筆担当者は中部大藤吉研の博士課程でVision Transformerをごりごり使って活躍されている箕浦さんです。

第4章 コンピュータビジョンタスクへの応用

画像認識や物体検出などの代表的なコンピュータビジョンタスクにおいて、Transformerをどのように応用するか紹介している章です。見どころは、Transformer以前の手法と比較しながら網羅的に説明されているところで、コンピュータビジョン分野の入門にもオススメです。執筆担当者は産総研のQiuさんです。

第5章 Vision and Languageタスクへの応用

Image-captioningやVisual Question Answeringなどの代表的なVision and Languageタスクにおいて、Transformerをどのように応用するか紹介している章です。基本的に第4章と同じ構成なので、Vision and Languageの入門にもオススメです。執筆担当者は第4章と同じく産総研のQiuさんです。

第6章 Vision Transformerの派生手法

SWin TransformerやDeiTなど、Vision Transformerの代表的な派生手法について紹介している章です。Vision Transformerを賢く使うために押さえておくべき基礎技術が厳選されて紹介されています。6章の最初のページにある派生手法の網羅的な分類図は網羅的過ぎてドン引きするレベル(褒めてる)なので、ぜひご覧ください。執筆担当者は3章を担当されている箕浦さんです。

第7章 Transformerの謎を読み解く

Transformerの各モジュールについて、第2章の復習も兼ねて一つ一つ振り返りながら、近年どのような議論や知見があったのかを紹介している章です。Vision Transformerに限らずTransformer全般で得られている知見を紹介するようにしました。まだVision Transformerに応用されていない技術もあるため、Vision Transformerの今後の改善のヒントにしていただけたらと思いながら書きました。執筆担当者は私です。

第8章 Vision Transformerの謎を読み解く

Vision Transformers vs CNNs (ResNet) vs MLP-Mixersという図式で三国時代に突入した後、現在の情勢がどうなったか、Vision Transformerの良さとは何か、結局CNNやMLPとはどう差別化されるのか、そこから見えてくる新しいモデル構造はあるのか、ということについて紹介している章です。執筆担当者は私です。

手薄になっている内容

本書(というか7章)で扱いが手薄になっている内容についても触れておきます。ずばり、Attentionの計算量の効率化の部分です。メタサーベイの資料だとP.95-P.110が該当します。本書では、第6章の最初にある派生手法の網羅的な分類図を見ると、Vision Transformer関連でどのような研究があるのか見当をつけることができます。具体例としてはSWin TransformerやTimeSformerを取り上げています。

しかし、Attentionの計算量の効率化はTransformerが抱える課題の花形的存在です。もう少し自然言語処理のTransformerとも絡めて紹介してみても良い気はしていました。入れるとすれば私が担当した第7章なのですが、入れるのを意図的に避けてました。主な理由は、Attentionの計算量の効率化というの話を真面目に入れるとボリュームがヤバそうという点、私の時間的余裕が限界だった点、そして巷に良い解説記事が既に結構あるという点でした。

Transformerの計算量効率化の話題に触れたいのであれば、下記のサーベイ論文(Efficient Transformers: A Survey)を読むのが一番手っ取り早いです。

arxiv.org

Vision Transformerにおける計算量効率化手法の多くは、ここで紹介されている手法の派生としてみなすことができます。例えば、CSWin Transformer (CVPR2022)Longformerのように局所的なAttentionのみに計算を絞ることで計算量を落としています。また、Pyramid Vision Transformer (PVT) (ICCV2021), PVT v2 (CVMJ2022)では、LinformerのようにSelf-attentionのKeyとValueを小さい次元のベクトルに写像してから計算することで計算量を落としています。(PVTはLinformerを引用してないみたいですけど・・・)

Vision Transformerの計算量効率化関連の良資料としては、特に内田さんの記事が参考になるかと思います。

www.slideshare.net

画像では、大きな画像に対して小さいパッチを使おうとしたり、動画を使おうとすると計算量が爆発的に増える点があるので、やはり計算量の効率化手法は重要で、7章でも取り上げた方が良かったのでしょうね。この辺は力不足で少々悔やまれるところです。とはいえ、本書のメインコンテンツはTransformerではなくVision Transformerですし、そのVision Transformer関連の計算量効率化手法の基礎技術は箕浦さんが第6章でしっかりサポートしてくださっているので、Vision Transformer入門としては十分な内容を備えた本になっているかと思います。

本書が皆様のお役に立てば幸いです。

*1:複数の研究の結果を統合してメタ的な視点から分析を行うこと