Nchasoの作業ログ

ML / ソフトウェア エンジニアのブログ

シアトルで開催された国際会議NAACL2022に現地参加した話 〜海外でコロナになったら〜

はじめに

2022年 7/9-7/16に開催された自然言語処理のトップカンファレンスNAACL 2022に発表者として現地参加しました。 現地で体験したことや、コロナに感染したことについてまとめたいと思います。

2022.naacl.org

本会議に採択された論文は以下となります。 エンティティと文を利用した対照学習を行うことで文埋め込みを学習する手法を提案しました。

aclanthology.org

目次

学会の様子

朝食・会場

朝方会場付近に行くと朝食がまばらに置かれていました。飲食スペースがなく、立って食べるか食器回収スペースで食べるかでした。 また会場は400人は入りそうな広さがありました。コロナの影響で対面での発表が学部4年時以来だったので、会場を眺めながら緊張していました。

会場の様子

レセプションパーティ

7/10の夜に開催されたWelcome Receptionへ少しだけ顔を出しました。 Welcome Receptionは最近のコロナ禍の日本では見られない大人数密集パーティで、とても賑わっていました。 流石に感染リスクが高そうだったこととお腹を壊していたこともありホテルの部屋に戻りました。

日本人の方々との交流

現地参加している日本人の方々と交流をしました。 シリコンバレー企業勤務の方やアメリカの大学で博士課程に在籍している方など、色々な方々のお話を聞くことができました。 US企業に応募する日本人が少ないこと、ベイエリアは田舎すぎでなにもないこと、アメリカ企業の待遇や実際の忙しさなど アメリカ生活者ならではのお話が聞けてとても良い経験になりました。 個人的にはアメリカは治安が悪く危険なため、どの場所で事件が起こったかがすぐわかるアプリを入れて都度確認しながら移動する という話が興味深かったです。

日本人の方との交流

発表

詳しくは後述しますが、コロナに感染したため現地参加したのにもかかわらず、ホテルの一室でのオンライン発表になりました。 メイン会議も終わりに近づいていたからか私の発表セクションに人気がなかったからか 現地会場・Zoom会場は共に閑散としていて、質問は簡単な確認が1つのみでした。 初めての現地国際会議参加ということでしっかり発表準備を行って臨んでいたので少し残念でした。

観光・食事・街

パイク・プレイス・マーケット周辺

シアトルの観光地として有名なパイク・プレイス・マーケットにやってきました。 本当に様々なものが売っていましたが、個人的に気になったのは花束と魚屋でした。 花束を買っている方・持っている方が多いように感じ、何に使うのかとても気になりました。 またマーケット内にある鮮魚店では、魚を投げるパフォーマンスをしていました。 観客が異常に盛り上がっていたのが面白かったです。

パイク・プレイス・マーケット

パイク・プレイス・マーケット付近から見える海はとても綺麗でした。 ここからの景色を見てシアトルにきて良かったなあと思いました。

パイク・プレイス・マーケットから見た海

パイク・プレイス・マーケットの端にある観光スポット「ガム・ウォール」にやってきました。 カラフルなガムでびっしり埋まった壁は異様で面白かったのですが、よく考えるとかなり汚いなと思い写真だけ撮って早々に抜け出しました。

ガム・ウォール

また、スターバックス1号店に行きました。 休日は行列ができており、一時間以上は並ぶ必要がありそうだったので平日に出直しました。 店舗自体は割と狭く、こんな場所から世界に展開していったのかと考えると感動しました。 スタバ1号店オリジナルマークのついたタンブラーとアメリカンコーヒーを注文しました。 暑くて喉が渇いていたせいか、アメリカンコーヒーはとても美味しく感じました。

スタバ1号店

シアトル・センター

シアトルの有名な観光名所の一つであるスペース・ニードルに行きました。 生憎天気は曇りでしたが、シアトルの街が一望できてとても良かったです。 ナイトプランがあるのも納得の景色でした。

スペース・ニードル

その後、アメリカらしい音楽・ポップカルチャーを楽しむMuseum of Pop Culture (MoPOP)に行きました。 アメリカの音楽やヒップホップの話はあまり知らなかったので勉強になりました。 個人的には色々なゲームが置いてるゲームエリアや、ファンタジーの世界、ホラーの世界が興味深かったです。 特にホラーの世界は入場にPG-13指定があり、会場の展示物やBGMなどが作り込まれており、本当に怖い空間でした。 また、バイオハザードに登場するネメシスや13日の金曜日のジェイソンなど自分にも馴染みのあるキャラクターの模型が置いてあったのもグッドポイントでした。 全体を通してMoPOPは美術館というよりはサブカルテーマパークという感じでした。

MoPOP

イオニア・スクエア

シアトル発祥の地、パイオニア・スクエアに行きました。 街並みが綺麗で、特に1st Ave Sは木々が美しく配置されていてとても写真映えする通りでした。 広場にはトーテム・ポールや大きいチェス、卓球台、兵隊の銅像など 様々なものが置いてあり、中々カオスで面白かったです。 また、街中で立ち寄ったWaterfall Garden Parkは美しい滝がある公園で和を感じられる素晴らしい空間でした。 コロナに感染しいつ帰国できるか不安だった自分の心に染みました。

イオニア・スクエア周辺

シアトルの街の地下を探検できるアンダーグラウンドツアーに参加しました。 シアトルでは19世紀後半に大火災が起こり、木造であった建物の多くが焼失してしまいました。 その再建の際に地上が何メートルか引き上げられ、昔存在していた街は地下に残されたままになっているそうです。 アンダーグラウンドツアーは地下に眠っている19世紀後半に存在していた昔のシアトルの街を見学できるツアーとなります。 ツアーではガイドの指示に従いながら街の各所にある入り口から地下に入っていきました。 当時のホテルのロビーや家のトイレとかがあって不思議な気持ちになりました。 また、天井にガラスが貼られてて、それが地上で見かけた床ガラスと対応していることを知った時は面白かったです。

アンダーグラウンドツアー

ウォーターフロントパーク周辺

ウォーターフロントパーク周辺の海の眺めは本当に綺麗でした。 船の汽笛や飛んでいるカモメも含めて雰囲気のある海岸でした。

ウォーターフロントパーク周辺にあるシアトル水族館に行きました。 エリオット湾に面した水族館で外観がかなり大きかったので、他では見たことないような 何かがあると期待していましたが、実際の展示エリアは思ったより少なく展示物も特に目新しいものはありませんでした。 オルカカードの由来にあった、イルカの仲間のオルカの骨や牙が展示されていたのが個人的には一番面白かったです。 オルカのとても大きい牙の写真を撮り忘れたのが心残りです。

ウォーターフロントパーク周辺

また、シアトル美術館に行きました。 抽象画を子供の時以来初めて真面目に見ましたが、やはり全く価値がわかりませんでした。 中にはこういうことを表現したいのかなと想像ができる作品もありましたが、 本当に何のどこを表現したのかタイトルを踏まえても全くわからない作品もあり、どうやって価値のある抽象画だと判断されたのかとても気になりました。 アフリカの民芸品、仮面や中世ヨーロッパでの肖像画や日常、宗教作品など、文化を表した作品は個人的にはわかりやすく面白かったです。

シアトル美術館

建築様式が独特なことで有名なシアトル図書館にも立ち寄りました。 日本語本コーナーに立ち寄りましたが、種類が少なくかなり古い本ばかり置いてありちょっと面白かったです。

シアトル図書館

偶然通りかかったFran's Chocolatesに立ち寄りました。 ここはシアトル発祥の高級チョコ店でお土産として人気があるらしく、 店員さんにおすすめを聞きながらお土産用のチョコを選びました。

Fran's Chocolates

食べ物

現地での主に食べた食事の一覧は以下となります。

  • オイスター(Taylor Shellfish Oyster Bar)
  • えびパスタ(Andare Kitchen & Bar)
  • クラムチャウダー(Pike Place Chowder)
  • ハンバーガ
  • 揚げ物色々
  • 博多豚骨ラーメン(Samurai Noodle)
  • 刺身(Urara Japanese Cuisine)
  • ホテルの朝食

海の近くで海鮮が有名なシアトルということだけあって、 オイスターやクラムチャウダー、えびのパスタ(パスタ名を忘れました。)は海鮮がプリプリでとても美味しかったです。

海鮮

アメリカンなハンバーガーや揚げ物はよく出てきました。 美味しいのですが、味が濃いもの・脂っこいものが大量に出てくる場合が多く全てを食べ切るのは毎回大変でした。

ハンバーガーと揚げ物

また、シアトルで日本料理店にもいくつかいきました。 パイク・プレイス・マーケット付近にある刺身が食べられる日本料理店Uraraは Google mapでの評価も高く、値段も良心的とのことでしたがサーモンが3切れで約2200円でした。 とてもじゃないけどシアトルの店で刺身や寿司を食べられないことを痛感しました。 Samurai Noodleで食べた博多豚骨ラーメンは良心的な値段で、スープの味以外は比較的再現できているような気がしました。

日本料理店

シアトルでの食事は海鮮は美味しかったのですが、全体的に味が濃い・脂っこい・バラエティが少ない・高いと感じました。 食事面を考えると私はここには住めなそうです笑 日本の安くてバラエティに富んだ食べ物は素晴らしいです。

ホテル

現地では以下の3つのホテルに宿泊しました。

  • Hyatt Regency Seattle
  • Staybridge Suites Seattle Downtown - Lake Union, an IHG Hotel
  • Best Western Plus Pioneer Square Hotel Downtown

NAACLがHyatt開催だったので、ホテルの部屋からすぐに会場に行けて便利でした。 また、ホテル内にあったレストランが美味しかったのも良い点でした。(上で紹介したえびパスタになります。)

ルームシェアしていた方にコロナを移す可能性を減らすために7/14にStaybridgeホテルに移動しました。 一泊は高額($590)でしたが、部屋は広くキッチンまでついていました。 また、無料の水飲み場やコインランドリーがついていて便利でした。 さらにシアトル・センターまで近く、その付近を観光する際にはとても便利です。

Staybridgeホテルの宿泊費が高額で保険で賄えるか心配だったため、途中でPioneer Square Hotelに移動しました。 Pioneer Square Hotelは名前の通り、パイオニア・スクエアにあるホテルです。 良かった点は古風で雰囲気があること、綺麗に掃除が行き届いていて毎日ハウスクリーニングあること、Wifiが強いことでした。 古い洋館?独特の匂いがあり、初日は気になりましたが次の日からは全く気にならなくなりました。 あとドアが薄く廊下へ音漏れする点は気になりました。

Hyatt・Staybridge・Pioneer Square Hotel

全てのホテルに関して日本と比べると水ペッドボトルや歯ブラシ・髭剃りが置いていない、温水洗浄便座ではない(海外だと自明?) 点が少し不便でした。

その他

信号

シアトル(というかアメリカ)の歩行者信号機は 歩行禁止に切り替わるまでの秒数が表示されるのが面白かったです。 こっちの方がわかりやすい!

シアトルの信号

オルカカード

シアトルでの交通機関利用にはオルカカードがあると便利でした。 オルカカードはpasmosuicaのようにお金をチャージすることで乗車時にカードでの支払いが可能です。 オルカカードは各駅に設置されているオルカカード発行機兼チャージ機で発行・チャージが可能です。 駅のホームに専用のタッチする機械があるため、タッチすることでカードを利用できます。 無賃乗車チェックが抜き打ちで行われ、無賃乗車が発覚すると$124の罰金が生じるそうです・・

オルカカード

www.shotanomad.com

その他風景

その他シアトルで撮影した写真をいくつか貼っておきます。

色んな写真

新型コロナウイルスへの感染

7/12の朝方に喉の痛みと発熱が生じ、新型コロナウイルスの感染を疑いました。 帰国に際してどのような手続きを行ったかについてまとめます。

必要な手続き

基本的にはまず以下の点を確認する必要があると考えました。

  • 滞在中の地域の隔離のルール(期間・場所)
  • 日本帰国に際しどのような書類が必要か
  • どのような費用に海外保険が適用になるか

以上の点を確認し、決められた期間・場所で隔離生活を行いながら、 海外保険の適用範囲内の行動を取りつつ、日本入国のために必要な書類を集めるのが 基本的な行動戦略となります。 以下は2022年7月12日時点におけるシアトルでの私の場合の対応について説明します。 (Covid-19に関する対応は時期・地域によって変わるので本記事の内容はあくまで参考程度にしてください。)

シアトルでの隔離ルールについて

ワシントン州のルールによるとシアトルでは 最低丸5日間の自宅隔離が必要になるようでした。 従って私の場合は7/12に陽性が判明したので、7/17まではホテルでの隔離が必要でした。 とは言ってもアメリカからの出国時に隔離を行ったかを確認されることはないのでPCR検査で陰性にさえなれば 隔離期間内でも帰国は可能かもしれませんが、以降で説明する回復証明書の取得や海外旅行保険の適用の話に関わってくるので 隔離期間自体は調べておく必要があるかと思います。

日本帰国に必要な書類

基本的には通常の(最初からPCR陰性だった)日本への渡航者と同様に、厚生労働省が提示している有効な陰性証明書を取得すれば帰国が可能です。 主な注意点は

  • フライト出発時間前72時間以内に検査すること
  • 有効な検査法・検体であること
  • 医療機関名や交付日が記載されていること

ですが、こちらも通常の日本への渡航者と同様となります。 私の場合はなるべく早く帰国したいと考えていたのでPCRの結果が即日出る検査場を探しました。 検査場によっては翌日以降に結果が出る場所もあるのでご注意ください。 また、抗原定量検査(抗原定性検査ではない方)でも帰国が可能で、こちらの方がPCRより陰性になりやすいらしいです。

www.mhlw.go.jp

また、現地の領事館に発行していただける領事レターを陰性証明書の代わりに利用し、帰国することも可能なようです。 こちらは以下の書類を領事館に提出することにより、2〜3営業日で発行していただけるとのことでした。

  • パスポート
  • 回復証明書
  • 陽性証明書
  • 日本への渡航便情報(eチケットなど)

こちらの提出書類には多くの注意点があります。

まず、回復証明書の発行には医療機関の受診が必要となります。 基本的には医師に回復したと認めてもらうことで発行が可能となりますが、 この回復の基準が曖昧で、医療機関によっては症状の有無だけではなく最初のPCR陽性からの一定の日数経過を要件に入れていたりします。 領事館によると「最低限の隔離期間が経過していること」と「症状が出ていないこと」を満たしている場合基本的には発行が可能とのことですが、 事前に現在の状況で回復証明書の発行が可能か医療機関に問い合わせてみる必要があるかと思います。

また、陽性証明書は回復証明書の発行日の翌日以降に検査したものが必要となります。 要は「医師からは回復したと判断されているのに、まだ陽性になってしまうという」という状況で 領事レターは発行されます。

さらに、領事レターの発行にはeチケットなどの日本への渡航便情報の提出が必須となります。 このため、帰国便の予約を確定させチケット情報を入手しないと領事レター発行の申請はできない 点にご注意ください。 この点について後述するデッドロック状態が発生する可能性があるようです。

より詳しい話は以下の記事を参照ください。

blog.hpprc.dev

海外旅行保険について

また、私の加入していた損保ジャパンの海外旅行保険では、 以下の費用が補償対象になるようでした。

  • 追加で必要になった宿泊代
  • PCR検査の費用
  • 飛行機の旅程変更にかかった費用

注意点は宿泊代・PCR検査費用が合理的・スタンダードだと判断された額のみしか支払われないことです。 例えばルール上の隔離期間が5日間であるにも関わらず、特に理由もなくPCR検査を受けたのが15日目とかだと、延泊代が全額補償されない可能性があります。 また、回復証明書発行のための医療機関受診の費用が補償対象外でした。 海外旅行保険によって補償内容が異なるので電話等で細かく確認を取る必要があるかと思います。

その他の作業

帰国日が伸びるにあたって以下の作業を行いました。

  • フライトの変更
  • ホテルの予約
  • Simカードの延長
  • 海外旅行保険の延長
  • 洗濯
  • 解熱剤・体温計・簡易抗原キットの入手
  • 大使館への連絡
  • 濃厚接触した友人・研究室・職場への連絡

フライトの変更に関しては、日本航空だとコロナへの特別対応で 一定期間オープン予約状態としていただけて、陰性証明書(or 領事レター)の提出とともに無料で再度予約可能になるそうです。 このオープン予約状態で領事レターを発行しようとすると、飛行機の予約には領事レターが必要だが、領事レターの 発行には飛行機の予約情報が必要というデッドロック状態が発生するようなので十分にご注意ください。

その他延泊ホテルをBooking.comで予約し、 Simカードは現地のT-Mobileで購入しました。

また、コロナに感染した際は簡易抗原検査キットを購入した方が良いと思います。 PCR検査の費用が高額(シアトルだと$125〜$175)なので、 簡易抗原検査キットで陰性であればPCR検査を受けに行くのが良いかと思います。 私の場合は、学会の運営から簡易抗原検査キットをいくつかもらっていたものに加えて、 近所のスーパー・ドラッグストアで購入し、合計5回分の簡易抗原検査を行いました。

また、ルームシェアしていたhppさんに解熱剤や体温計、食糧などを購入してきてもらいました。 今回の騒動ではhppさんを始め、多くの方々に助けていただきました。 これらの助けがなかったら無事に日本に帰国できていなかったと言っても過言ではありません。 本当にありがとうございました。

領事館へ連絡すると色々情報をくれて助けてくれるという話を聞いていたので、 陽性が判明した時点で領事館にも今回の騒動について連絡をしました。 領事館からは領事レター関連の情報はいただけましたが、基本的には自分で情報を集めてくださいとの返信でした。 対応者による話なのかもしれませんが、領事館が必ずしも助けてくれるわけではないと考えておいた方が良いかもしれません。

私の場合

私の場合のPCR陰性までのスケジュール感は以下の通りです。

  • 7/12: コロナ感染疑惑。PCR陽性
  • 7/18: 隔離終了。簡易抗原検査キットで陽性。PCR検査受けず。
  • 7/21: 簡易抗原検査キットで陰性。PCR陽性
  • 7/23: 簡易抗原検査キットで陰性。PCR陰性
  • 7/24: 帰国

7/21にPCR陽性になった際はかなりメンタルにきましたが、7/23に運良く?陰性になり本当に良かったです。 結局、領事レターの手続きは行わず陰性証明書の取得のみで帰国しました。 帰国の際はMySOSアプリに諸々登録することで日本入国手続きがスムーズになるので事前に手続きをしておくと便利です。

コロナ感染に際して参考にさせていただいた記事

www.rnaj.org

おわりに

シアトルは海岸近くの景色が最高で海鮮が美味しい点が本当に良かったです。 また7月の渡航でしたが、とても快適に過ごせる気候で気持ちよく外を歩ける点も魅力的でした。

コロナに感染しアメリカで色々手続きした経験は今後どこかしらで生きてくると思います。 また、本記事が似たような境遇になったどなた様かの助けになれば幸いです。 読んでいただきありがとうございました。

CA Tech JOBに参加してきました

はじめに

2月の間、CyberAgent inc.さんの実践就業型インターンに参加しました。

www.cyberagent.co.jp

就業チームの紹介

大規模なサービスの基盤システムやデータマイニング等を行う研究開発組織である 「秋葉原ラボ」にてインターンをさせていただきました。 所属していたチームでは特にAmebaブログ等テキストデータから構造化されたデータを作成する取り組みを行っていました。

f:id:nchaso:20210227204607p:plain
テキスト処理基盤(秋葉原ラボの技術領域紹介ページより)

何をしたか

インターンでのタスク

詳しくは書けませんが、Amebaブログにおけるある特定の要素について抽出する仕組みの考案・実装・デプロイを行いました。

基本的には調査→予備実験→実装→改善のようなサイクルをベースに Pythonで提案手法の予備実験・評価を行い、Javaで提案手法を実装し改善点を探すという流れでした。 ミーティングは毎日二回行い、何をするのか・何をしたのかを日ごとに整理しながら進めました。

特にJavaを書くのは初めてでしたが、 参考書で文法の勉強から始め、SpringBootでのWeb開発まで関わることができたのは大きな学びでした。

また、Kubernetesでのコンテナ運用等、デプロイ周りの技術にも関わらせていただきました。 他社で行ったデプロイとは異なるプロセスだったのが興味深かったです。

その他、gitクライアントのtigや やzsh用の設定フレームワークOh My Zsh等、開発効率化のtipsをいくつか教えていただきました。

その他

秋葉原ラボ内で定期的に行っている研究会に参加しました。 研究会はラボの方々が知見を自由に共有する場で、 深層強化学習の話が聞けたりと幅広いコンテンツで面白かったです。

また、人事の方には何度も面談の機会を設けていただきました。 就職活動に関して僕が何を重視しているのかを考える良い機会になったと思います。

おわりに

全体を通してサービス開発の楽しさを学べたインターンだったと思います。 昨今の状況によりほぼリモートでのインターンでしたが、最終日にはオフィスを案内してもらったり社員さんのお話を聞いたりすることができました。

特に興味深かったのが、

  • 社員のある方がRAG FAIRの加藤さんの個人的な知り合いだったこと

  • (少なくとも秋葉原ラボの方々は)パリピという感じではなかったこと

でした。

また、当たり前ですが未知の技術はまだまだたくさんあることを痛感しました。 これからも貪欲に学んでいきたいと思います。

f:id:nchaso:20210228192125j:plain
Abema towers(入口)

f:id:nchaso:20210228190411j:plain
オフィスにある食堂

森羅2020-ML: 多言語分類タスクに参加しました

はじめに

インターン先の取り組みの1つとして、NTCIR-15のshared taskである森羅2020-ML: 多言語分類タスクに参加し、 12/9〜12/12に行われたNTCIR-15カンファレンスで結果を発表しました。

shinra-project.info

森羅2020-ML: 多言語分類タスクについて

森羅2020-MLとはWikipediaの知識を計算機が扱える形に構造化することを目指す「森羅プロジェクト」の取り組みの1つで、 多言語のWikipediaページの分類を行うタスクです。

具体的には、カテゴリ分類されたアノテーション済み日本語WikipediaデータWikipediaページの言語間リンクの情報を用いて、他の言語のWikipediaページをカテゴリ分類するタスクとなります。

f:id:nchaso:20201209173708p:plain
森羅2020-ML概要(タスク紹介動画より)

提案システム

僕たちのチームは事前学習されたモデルを用いて、マルチクラス分類として今回のタスクを解きました。 具体的には以下で紹介するテキストベースの素性とエンティティベースの素性Wikipediaから取り出し、学習に利用しました。

f:id:nchaso:20201209174546p:plain
提案システム概要

テキストベースの素性

Wikipediaページのテキストを汎用多言語モデルXLM-RoBERTa1 に入力し [CLS]トークンの位置に対応する最終層の隠れ表現を利用しました。 こちらはBERTベースのテキスト分類ではよく利用される素性となります。

エンティティベースの素性

Wikipediaページに現れるエンティティ群をダンプデータから 直接抽出し、事前学習されたエンティティ表現に変換したものを利用しました。

具体的には、以下の2種類の事前学習済み埋め込み表現を利用しています。

  • Wikipedia2Vec2

  • Pytorch BigGraph3

これらのエンティティ表現の集合、すなわちBag of Entityをエンティティベースの素性として利用しました。

提案システムではこれらの素性を連結し、後続のMLP層に入力します。 最終的にはSoftmax Cross Entropyで損失を計算するマルチクラス分類としてタスクを解いています。

さらに提案システムでは以下のような工夫を加えています。

ペアラベルの自動追加

森羅2020-MLタスクは実際には1つのWikipediaページに対して複数のラベルをつけるマルチラベル分類タスクでしたが、 ほとんどの学習データの正解ラベルは1つだったのでマルチクラス分類タスクとして解いています。

実際にマルチラベルを持っているWikipediaページを集計してみると以下の表のように 同じペアで頻繁に共起していることが判明しました。

f:id:nchaso:20201210173710p:plain
よく共起しているラベル

このことを利用して、ペアでよく共起しているものをペアラベルとして辞書に保持しておき、 推論ラベルに辞書の存在するラベルが含まれれば、相方のラベルもlogitsがある閾値以上であれば推論ラベルに含める というようなヒューリスティックな処理を行っています。 閾値や保持するペアの数は検証データにおける性能で調整しました。

日本語Wikipediaデータによるデータ拡張

基本的には学習データとして、分類済み日本語Wikipediaデータに言語間リンクでつながっている対象言語のWikipediaデータを 利用しています。 しかし、言語間リンクに対応している対象言語のWikipediaデータがないような分類済み日本語Wikipediaデータもあるので これらのデータも学習に利用することでさらなる精度の向上に成功しました。

テキストベースの素性に関しては、マルチリンガルモデルを利用しているので、日本語Wikipediaページのテキストをそのまま入力値として扱いました。 また、エンティティベースの素性に関して、Wikipedia2Vecのエンティティ埋め込み表現は多言語対応しているわけではないので、 エンティティ間の言語間リンクを利用して対象言語のエンティティに変換し、その表現を利用しました。

不均衡データのためのロスの重み付け

正解ラベルに偏りがあり、マイナークラスで精度が出ていないことが判明したので ラベルごとにサンプルの数の平方根の逆数をweightとして設定したCross Entropy Lossで学習しています。 こちらのweightの設定も検証データにおける性能で調整しました。

結果

XLM-RoBERTa baseモデルをベースラインとしてドイツ語で比較実験を行いました。 エンティティベースの素性を加えることでベースラインの性能を上回り、日本語データを利用することでさらなる性能の向上を確認しました。

f:id:nchaso:20201210161422p:plain
比較実験の結果(リーダーボードでのスコア)

時間の関係で、ドイツ語にて調整した閾値を用いて他の言語の分類を試みました。 最終提出の結果が以下となります。

f:id:nchaso:20201210161205p:plain
終結

このタスクには10チームほど参加しており、富士通研究所のチームやインド工科大学のチームなども参加していました。 僕たちのチームは提出した9言語中、ドイツ語・フランス語で1位を達成し、他の言語でも高い順位の結果を残すことができました。

おわりに

機械学習系のコンペティションに本格的に取り組んだのは初めての経験で、新たな発見が多々ありました。 特に、データを眺めたり、色んなパターンを試したりと泥臭く性能の向上を追っていくような取り組みは 意外と楽しいということに気付いたのは大きな発見だったと思います。

Cookpad Inc.さんの夏季インターンに参加してきました

はじめに

9/1 - 9/11にCookpad inc.さんのサマーインターン(研究開発コース)に参加してきました。

internship.cookpad.jp

志望動機と選考

志望動機

元々はクックパッドはエンジニアリング技術に力を入れている会社という認識でしたが、 以下のWebページをみて研究開発にも力を入れていることを知りました。

research.cookpad.com

海外でも70か国以上でサービスを展開しているので、自分の多言語の言語処理に関する知見が活かせるのでないかと考えたのが応募のきっかけでした。

また、過去にクックパッドインターンに参加していた先輩から インターン中に料理を作った話を聞き、楽しいインターンのイメージがあったのも1つの理由です。 (コロナの影響で今回は料理は作りませんでした。)

選考について

選考フローは書類選考→面接→合否連絡でした。

選考時には、クックパッドのレシピ翻訳に関する既存研究の論文を読み、改善できそうな手法を提案しました。

今回の夏の就業型インターンシップ(研究開発コース)に参加したのは僕一人しかいないらしく、無事通過できてとても幸運でした。

何をしたか

クックパッドアプリ ではレシピを書く際に以下のような材料予測機能があります。

ペペロンチーノの材料推薦

このような機能を実現している「レシピタイトルから材料を推薦するモデル」の改善を行い、作成したモデルで材料を予測するAPIを開発環境にデプロイしました。

モデルの改善

Kerasで実装された既存のモデルをPyTorchで全て実装し直し、工夫を加えた新しいアーキテクチャで精度が改善されていることを定性的・定量的に示しました。

新モデル作成後は、以下のスライドのデプロイフロー(41ページ以降)を体験させていただきました。

speakerdeck.com

学習バッチの実装

定期的にRedshiftからレシピデータをダウンロード→モデルを学習→s3にアップロードするような学習バッチとして動作するコードを実装しました。

AWS EC2上で開発作業を行いました。 学習バッチにしろ、後述する推論APIにしろ、基本的には全てdockerのコンテナ上で動作するようになっていたのでDockerfileを書いたりもしました。

作成した学習バッチのメモリがのりきらず、メモリ削減に取り組んでいましたが、時間の関係で実際のデプロイは断念しました。

推論APIのデプロイ

レシピタイトルを含むリクエストを送ると材料群が返ってくるような推論APIflaskを用いて実装し、開発環境へのデプロイまでを行いました。

部署の方々に推論APIのレビューをしていただいたり、デプロイのためにインフラチームにプルリクを送ったりと、実際にデプロイするまでのプロセスを体験することができました。

オフィス

オフィスは恵比寿ガーデンプレイスの12階にあります。

入口

キッチン

社内のcookpad mart

まとめ

2週間という短い期間でしたが、新しい技術をたくさん学べて圧倒的成長ができたインターンでした。

様々な技術に触れる中で、エンジニアとして生きていくにはML関連の技術以外にも強みを持った方が良いことを痛感しました。

このような状況の中、インターンを実施してくださり本当にありがとうございました。

Wantedly Inc.さんの夏季インターンに参加してきました

はじめに

初投稿になります。 8/3 - 8/21に行われた3週間のWantedly Inc.さんのサマーインターン機械学習コース)に参加してきました。

www.wantedly.com

志望動機と選考

* 志望動機

基本的には 機械学習をプロダクト開発に繋げるような経験をしたかった ことが主な志望理由でした。

また、以下のスライドを見て自分の研究分野とのマッチングを感じたことも志望理由の1つです。(学部生の時、言語の埋め込み表現に関する研究を行っていました。)

○○2vec 再考 - Speaker Deck

Improving "People You May Know" on Directed Social Graph - Speaker Deck

* 選考について

選考フローはアンケート選考→コーディング課題→面接→合否連絡でした。

アンケート選考はアンケートフォーム(志望理由、最近学んだ技術等)の記入に加えて、wantedly.comのプロフィールも評価対象でした。

コーディング課題は基本的なアルゴリズムが書ければ問題ないと思います。(ABCの灰〜茶diff程度)

面接では配属先チームとのマッチングを見ているような気がしました。 Wantedlyさんが何をやっているかを調べた上でその中で自分がどういったことに興味があるのかをしっかりと考えておくと良いと思います。

何をしたか

  • Wantedly peopleのつながりの推薦の改善

名刺管理アプリケーションであるWantedly people では、アプリ/サービスを通じて築かれた人間関係を「つながり」と総称しています。 この「つながり」を増やしたいというモチベーションの下、つながりの推薦モデルの改善に取り組みました。

people.wantedly.com

もう少し具体的には、推薦モデルの学習時の特徴量の1つとして扱っているgraph embeddingをより良い表現にすることについて 取り組みました。

初日にメンターの方と課題設定を行い、その後は課題を踏まえてデータ分析→実験・評価→議論を繰り返すような形でした。 論文を読んでいる時間もあったりと、想像していたよりも自分のチームは研究開発に近い業務を行っていたように感じます。

Google Cloud Platformインスタンス上で開発を行いました。 BigQuery を利用して、膨大な生データを扱いました。SQLをそこまで書いた経験がなかったので、想像以上に長いコードが多くて驚きました。

週1回開かれる、ML輪講と推薦・機械学習勉強会に毎週参加しました。

この勉強会ではWantedlyのデータ系エンジニアが集まり、発表したい人が適当に皆に知見を共有していく形でした。

テックブログやweb上の資料等からの知見だけではなく、しっかりと元論文を読んで発表してくださる方もいらっしゃったのが特に印象的でした。

外部からの参加も可能なので、参加してみたい方は Yuya Matsumura (@yu__ya4) | TwitterさんにDMを送ってみてください。以下のissueから過去の資料が確認できます。 github.com

  • Tech lunchやエンジニア交流会への参加

週1回開かれる、お昼ご飯時にWantedlyエンジニア全体で技術の知見を共有する「Tech lunch」や、 不定期に開かれる?、他の部署のエンジニアと交流する「エンジニア交流会」にも参加しました。

Tech lunchでは、社内エンジニアの方に開発に便利なツールの紹介や他の部署で利用されている技術の紹介等をしていただきました。

また、エンジニア交流会では普段関わらない部署のエンジニアの方々とお話をしました。

お昼を食べながらでも、社内の開発技術力や団結力?を向上させていく取り組みにとても感心しました。 もちろん強制させるものではなかったですし、楽しく参加させていただきました。

会社の特徴

  • Gitが整備されている

Wantedlyでは基本的に何かタスクを行う時、全て共通のレポジトリのissueに書き溜めているようでした。 エンジニア以外の方もissueを活用しているようでした。

ラベルで整理もされており、誰が何をやっているかや過去の知見がそこを見ればすぐわかるようになっていました。 インターン中も、インターンタスクのためにissueを作り、作業ログを書き溜めていきました。

また、マージしないような雑な実験コードすらもプルリクを作って、レビューしていただきました。

  • 何故やるのか?を超重視している

WantedlyではWHYをかなり重視しているようでした。

例えばインターンタスクに関して、当初結果を出して改善すればそれで良いと安直に考えていましたが、 メンターの方は結果も大事だが何故それをやる必要があるのか、本当にやる価値があることなのかを をデータから実証することをとても重要視していました。

他には毎日朝の全体MTGやチーム内でのMTGには全てしっかり目的が設定されていたり、 gitのissueのテンプレートにWHYとWHATをまず書くようになっていたりしたところも印象的でした。

  • オシャレ

オフィスがお洒落でした。 f:id:nchaso:20200823224031j:plain

そして、高級住宅地として有名な白金台にオフィスを構えており、近くにお洒落なレストランがたくさんあるようでした。 社員の方々に何回か連れていってもらいました。

f:id:nchaso:20200823223901j:plain

f:id:nchaso:20200823223837j:plain

f:id:nchaso:20200823223929j:plain

また、Wantedlyグッズをたくさんいただきました。Wantedlyのデザインチームは拘りが異様に強いそうです。 f:id:nchaso:20200823223648j:plain

まとめ

全体を通して、まさに就業型のインターンでした。 毎朝の全体ミーティングやメンターとの打ち合わせ、社員の方々とのご飯等、会社で働くってこんな感じなんだなとイメージを持つことができました。

また、美味しいご飯も食べられましたし、他のインターン生とのつながりもできました。とても楽しかったです。

このような状況の中、オンライン・オフラインを組み合わせてインターンを実施してくださったこと、本当に感謝です。 3週間ありがとうございました。

f:id:nchaso:20200823223807j:plain