NoiminのNoise

競技プログラミング (多め) とWeb (たまに) ,自然言語処理 (ブログではまだ)。数式の書き方を一気に KaTeX に変えようとして記事を全削除してインポートし直すなどしたので,過去にブックマークされた記事は URL が変わってしまっている可能性があります…….

FORCIA Summer Internship 2018 参加しました

フォルシア株式会社のサマーインターンシップに参加しました. インターンが終わってからだいぶ経ってしまったのですでに記憶が曖昧ですが書いていきます.

応募を決めるまで

修士課程卒業後は就職志望寄りで,仮に進学するにしても就職活動はやっておくつもりでした (学部生の時もほんの一瞬だが就職活動の真似事をした).そのため,今のうちから就職先候補となる企業の目星はつけておきたいと思っていました.なお思っているだけで特に行動はしていません.

しかし実を言えば,日本時間で9/6締め切りのAAAIのProceedingsを書くつもりで研究を進めていたため,今年の夏はインターンはやめておこうかなと思っていました (結局AAAIには出しませんでしたが……) .実際,このインターン以外には応募していません.まぁでも一応「よっっぽど興味あって条件良さげなインターンあれば考えてもいいかな〜」ぐらいに思い,最低限の情報収集 (AtCoder Jobsとエンジニアインターンの情報が集まる魔法のスプレッドシートのみ) はしていました.

しかしある日,AtCoder Jobsでビビっとくるインターンの求人を見つけます.

その名も,FORCIA Summer Internship 2018 ~高速検索技術を支えるエンジニアとともに学ぶ5日間~

応募を決めた理由はいろいろありますが,要約すると

  • 5日間の日程が3つあったが,そのうち3つ目はAAAI締め切り後.
  • 情報検索をテーマとする短期インターンシップというのは珍しく,かつ魅力的に感じた.自然言語処理の研究室に所属しているが,近い分野である情報検索にも少なからず興味を持っていたため.

また,1日2万円という高額報酬にも惹かれたわけではないと言えば嘘になります.

選考

書類選考→面接1回でした.

コースは

  • 検索アプリケーション開発コース
  • 検索高速化コース
  • Rust検索エンジン開発コース
  • Alexa Skill開発コース
  • Google Hotel Ads配信最適化コース
  • データ分析コース
  • データクレンジングコース
  • UI/UXコース

の8つでした (詳細はFORCIA Summer Internship 2018:フォルシア株式会社|にて).各コース1〜3人,計12人のインターンを受け入れたようです.この受け入れ人数に対して,8倍以上の人数の応募があったとか…….書類選考には10日程度かかりましたが,面接から1日でインターン受け入れの通知をいただきました.

なおAtCoder Jobsからの応募ではAtCoder Aランク (青) 以上が条件でしたが,それを満たしていなくてもインターンシップのサイトから応募可能です.実際にインターンに参加してみて,ほとんどのコースでは「競プロの経験は活きるかもしれないが,競プロ経験やアルゴリズムの知識が必須なわけではない」といった印象を受けました.

私は書類提出時に第1希望: 検索高速化コース,第2希望: データクレンジングコースを希望していたのですが,最終的に面接で社員さんからもお勧めを受けた (ちなみにのちのメンターさんである) データクレンジングコースになりました.

面接担当の方は応募者のスキルにあったコースをお勧めしてくださるので,もし来年以降応募する方がコースで迷うようであれば面接前または面接時に社員さんい相談してみると良いかと思います.

本番

データクレンジングコースでやったこと

書いちゃいけないことを書いてしまうと当然ダメなので,ぼかして書きます.

RDBに格納されているとあるテーブルの,短い文章が記載されたカラム (以降カラムAとする) に関してデータクレンジングを行いました.

メンターさんから与えられた課題は2つで

  1. カラムAのデータについて,必要のない部分を削ったり文章の表記ゆれを直したりして検索に利用しやすくクレンジングする.
  2. カラムAのデータ (ユーザも直接見られる) を,ユーザにとって利用しやすい形に成形する.

でした.抽象的な課題に見えますが,これはぼかして書いているからではなく実際に抽象的で自由度の高い課題だったということです.ちなみに同じコースの他の実習生は同じテーブルの他のカラムについてのデータクレンジングをしたようです.

1日目〜2日目の昼過ぎまでは課題1に取り組みました.必要のない部分を削るのはごくごく基本的な自然言語処理で十分だった気がしますが,表記ゆれの修正はやはり難しいですね.単語ベクトルを学習していじくりまわして見たりしましたが,ダメでした.

2日目の昼過ぎからは課題2に取り組みました.「ユーザにとって利用しやすい形ってなんぞ」ということで1時間ほど頭を抱えてアイディアを絞りだし,今度は「その形に成形するための教師データを作るには時間も何もかもが足りない」と数時間を頭を抱え,なんとか解決方法の目処を立てました.この時に役に立ったのは研究室で4年生の時にやった自然言語処理の教科書の輪読.その教科書のある章に書かれていた手法をぼんやりと思い出し,本 (社員さんたちのリクエストを元に会社のお金で仕入れられた本棚の本は自由に読んで良いらしい.偶然だがその時使った教科書と同じ本がフォルシアの本棚にもあった) や論文などを漁ってこれはいけるかも……でもどうかな……ぐらいの気持ちになる.メンターさんに相談したところ,試す価値ありという結論になり実装してみることに. メンターさんはめちゃすごい人でめちゃ優しい人だったので,人見知りな私でも詰まったことは気軽に相談できました.

3日目は,その手法をずっと実装する.インターン期間中に終わらないかもと思って泣きそうになりましたが3日目だけで最低限の実装は終わりました.競プロで鍛えた早解き力が役に立ったかもしれない (?) です.メンターさん + 数人の社員さんとの小規模なものでしたが,何気に中間発表もありました.

4日目は手法の細部をいじっていたり,あとはだいぶ長い時間ハイパーパラメータいじりをしていました.途中で実装ミスが判明し,それを直したら精度が落ちたりしてまた泣きそうになりました.この日の最後に,良さげだが計算時間がめっちゃかかりそうなハイパーパラメータで計算を回してから退勤しました.祈るような気持ちでした.

5日目,最終日.祈りが通じて,良さげな結果が出ていました.良さげな結果で成果発表の資料を作り,成果発表をしました.他のインターン生の発表が全部面白いし全部すごすぎる.SQLガリガリチューニングして高速化していたり,高速な文字列アルゴリズムを使って検索プログラムを高速化+省メモリ化していたり,ホテルの広告配信の確率モデルを考案してそれをめちゃわかりやすい形でまとめていたりと,発表を聞いている間全く退屈しませんでした.社員さんからの質問やアドバイスもとても活発で,大学ではなかなか得ることのできない,ビジネス的な観点からの手法へのアドバイスもあり,非常に勉強になりました.

福利厚生

フリードリンク・フリー朝食シリアル・フリーピノです.実際にはピノ以外のアイスもありましたが.

私は3日目以降は少し早めに出勤してエスプレッソを飲んでから課題に取り組んでいました.午後に眠くなったらまたエスプレッソを飲んで,ピノを食べてから課題に戻っていました.

私は食べていませんが,朝ごはんが食べられなかった時のためにシリアルと牛乳があるのも嬉しいです.

福利厚生とは少し違うかもしれませんが,めちゃくちゃ雰囲気が良かったです.社員の皆さんは優秀で温厚な方が多く,インターンで困ったときも特に困っていないときもとても親切にしてくださりました.私個人としては,いわゆるイケイケベンチャーのギラギラした感じや自己陶酔 (?) した感じが苦手で,かといって日本の伝統的な大企業の雰囲気にも違和感があって,という感じだったのですが,フォルシアの雰囲気はとても居心地が良かったです.社員さん曰く,実際に私のような学生がインターンのターゲット層の1つだったようです.

インターン中の食事

  • オフィスと直結しているビルにあるイタリアン
  • 1駅行ったところにある異様に安くて美味しい中華料理
  • 新宿駅から歩いていけるところにある衣がすごいトンカツ (これは今まで食べたトンカツでもトップクラス.他のインターン生も推していましたがぜひ味わってほしい)
  • 近くのホテルにあるレストランの洋食
  • オフィスの中でオードブル.オードブルというと安っぽいイメージがあるかもしれないがここで食べたオードブルは異様に美味しい.特にスモークサーモン?が美味しくてほとんど私が食べてしまった

1日目と最終日以外は2名ほどの社員さんと2名のインターン生 (2名の組み合わせは毎回変わる) という組み合わせが基本で,様々なバックグラウンドを持つ社員さんとお話しすることができました.

社員さんが美味しいお店をたくさん知っているので美味しい食事には事欠きません.

まとめ

自分が今取り組んでいることが将来につながると分かったという点と,将来就職する会社の有力候補が見つかったという点で,本当に参加して良かったです.お世話になった社員のみなさま,特にメンターさんには感謝の気持ちでいっぱいです.

少し後悔している点を挙げるとすれば,もっとビジネス的なアドバイスを自分から貪欲に聞きに行くべきだったなーというのと,他のインターン生とももう少し話せば良かったかなーということですかね.

応募したときは1日2万円にビビったりもしましたが,インターン参加にふさわしいか決めるのはフォルシアの社員さんであって我々ではありません.興味を持った方は来年以降思い切って応募してみると良いと思います. (そして参加することになったらNoiminのNoiseを見たと言っていただけるととても嬉しいです🙏🙏🙏)