エクサウィザーズ Engineer Blog

株式会社エクサウィザーズのエンジニアチームブログ

機械学習エンジニア、あるいはデータサイエンティストの選考に関する徒然

こんにちは! 構造化データグループのグループリーダー小林広明です。 今回は表題について、いくつか資料の紹介と私なりに思うところを少し書いていきます。

免責事項

弊社の選考基準について書いたものではありません。エクサウィザーズの他の面接官は異なる意見を持っていると思います。 ただし、私も書類選考や面接に関わっていて、その視点は入っています。

私は AI Frontier 部に所属していて、こちらのメンバーには基本的に機械学習エンジニアという職名を用いています。 ですが、特に私が所属している表形式データを主に扱うグループでは、一般にデータサイエンティストと呼ばれている職種が担う仕事も多く扱っていると思われるので、この記事では機械学習エンジニア・データサイエンティストの違いには触れずに書いていきます。*1

どちらかといえば中途採用(経験者)での転職希望者に向けて書いていますが、未経験者や学生、あるいは面接官にも参考になる部分があるのではないかと願っています。

応募書類/履歴書

今年の2月頃に一部界隈で話題になっていた、Chip Huyen が書いた「What we look for in a resume」というタイトルのブログ記事は共感できる内容でした。その記事で扱っていた項目の内2つについて以下に書きます。

We look for demonstrated expertise, not keywords (キーワードではなく、実証された専門性を求めています)

我々の職種に対する応募書類には技術的なキーワードが多く書かれていることがあります。 求人票もキーワードまみれになっている場合があって、一概に応募者側を非難することはできないですが、書類に書くキーワードは厳選して紐づく内容を充実させる方が好印象です。

私は面接時間の大半で、統計的機械学習やデータ分析に関して、応募者が時間を掛けて取り組んだことや得意なことをご説明いただいています。 書類時点で把握できる内容が多いほど、応募者に相応しい質問を考えることができますし、応募者が我々に対して質問する時間を確保しやすくなります。

守秘義務によって仕事内容を詳しく書けないこともあると思いますが、適度に抽象して書いていただければ幸いです。

We care about impact, not meaningless metrics (無意味な指標ではなく、インパクトを重視します)

教師あり学習ではテストデータに対する予測精度を向上させることを目標としています。 しかしながら、実際は予測することそのものが目的になっている場合は少ないのではないでしょうか。何らかのシステムの一部になっているか、意思決定の材料の一つであるとすれば、それらの目的に対して適っていたかが重要です。

上位の目的に対するインパクトは定量化しづらいこともあります。それでも数値指標で安易に代替するより、自分が行った学習や分析などの価値に向き合った過程や結果について記された書類は惹かれるものがあります。その上で、例えば目的関数(≒ 損失関数+モデル)をどのように設計・採用したかまでがストーリーになっていると最上に近いです。

これらについて書かれた「What we look for in a resume」はぜひ多くの人にご覧いただきたいです。

面接

面接について書かれた本を紹介します。

著者は先に紹介したブログ記事の書き手と同じ Chip Huyen です。本書は二部構成となっており、第一部では機械学習に関する職種の面接プロセス(オファー後の交渉含む)、企業における機械学習の役割、各役割が必要とするスキル、よく聞かれる質問の種類、それらにどのように備えるかについて説明しています。第二部では、機械学習の重要な概念と一般的な誤解に関する200以上の知識問題が含まれています。まだ未完だと思われますが、凡そのコンテンツは揃っています。

著者はスタンフォード大学で機械学習システムデザインの講義を開いていて、その講義をもとにした本日本語訳が今年の9月に出版予定)も書いていますが、本書を読んだ後に機械学習システムデザインに関する 27 問の質問にトライすることを勧めています。実際の採用面接でこのような質問をすることを私はしないですが、一問一答形式の勉強だけでなく総合的な現場の課題に近い問題を考えることは様々な立場の人にとって有用だと思います。

本書の付録には The zen of interviews (面接の禅)がついています。自らの戒めにしつつ、こちらでも共有します。

  • The goal of the hiring process is to hire people, not to eliminate them.(採用プロセスの目標は人材を採用することであり、排除することではありません。)
  • Interview questions should be tailored for each candidate. Companies who ask different candidates for the same role the same questions are process-driven, not people-driven.(面接の質問は候補者ごとに調整する必要があります。同じ役割の異なる候補者に同じ質問をする企業は、人主導ではなくプロセス主導です。)
  • Standardized interview questions lead to standardized answers which, in turn, leads to standardized people.(標準化された面接の質問は標準化された回答につながり、それが標準化された人々につながります。)
  • If a piece of knowledge is easy to acquire, it’s not worth testing for.(簡単に得られる知識であれば、テストする価値はありません。)
  • Ask questions with multiple hurdles. After giving the candidate a hint, the question becomes slightly easier, but there’s still room for the candidate to show off their skills.(複数のハードルを持った質問をしましょう。受験者にヒントを与えた後、質問は少し簡単になりますが、受験者が自分のスキルを披露する余地はまだあります。)
  • Ask hard questions. Extraordinary candidates can write up a simple solution within an hour, and there’s no upper bound on how much a candidate can improve the solution. Asking hard questions shows that you think about and work on hard problems, which attracts people who want to solve hard problems.(難しい質問をしてください。並外れた候補者は 1 時間以内に簡単な解決策を書き上げることができ、候補者がその解決策をどれだけ改善できるかに上限はありません。難しい質問をするということは、あなたが難しい問題について考えて取り組んでいることを示し、それが難しい問題を解決したい人を引き寄せます。)
  • A good interview is a question that turns into a conversation.(良い面接とは、質問が会話に変わることです。)
  • For long-term hires, interviews should focus on critical thinking and problem-solving skills instead of techniques. Techniques change over time, but critical thinking and problem-solving skills will always be relevant.(長期雇用の場合、面接ではテクニックではなく批判的思考と問題解決スキルに焦点を当てるべきです。テクニックは時間の経過とともに変化しますが、批判的思考と問題解決スキルは常に役に立ちます。)
  • Both interviewers’ and candidates’ time should be respected.(面接官と候補者の時間は双方とも尊重されるべきです。)
  • Interviews should be transparent. For each interview, not only the final evaluation but also the log of the questions and answers should be submitted.(インタビューは透明性のあるものでなければなりません。毎回の面接では、最終評価だけでなく質疑応答の記録も提出する必要があります。)

二冊目は深層学習に関する面接問答集で、先の本の後半をより詳細にしたイメージの本です。内容の大枠は以下のような感じです。

  • 数学的な基礎: 情報理論、微積分、自動微分、ベイズの定理など
  • 機械学習の基礎 (ロジスティック回帰、アンサンブル学習など)
  • 深層学習の基礎 (ニューラルネットワーク、ベイズ深層学習など)
  • 深層学習の応用 (CNN からの特徴量抽出がメイン)

基礎的な話題が多く、最近の生成AIはもちろん発展的な深層学習の話題についてかなり物足りない感じがしますが、構造化データグループではむしろこのような理解がしっかりされている方を好ましく思っています。面接中にいきなり問題として出すというより、取り組まれたこと/勉強されたことの技術的理論的な理解について、基礎的な質問をすることもあります。一通り勉強した後のチェックとしてご活用いただく際の素材一例として紹介しました。

終わりに

この手の記事を書くのはブーメランになって自身に返ってくるようで、プレッシャーがあります。面接官や候補者どちらの立場になっても、なるべく良い時間を過ごせるように私も精進が必要だと感じたことが、記事を書いた一番の収穫な気がします。

もしエクサウィザーズの採用情報にご興味がございましたら、以下のページをご覧ください。

recruit.exawizards.com

最後に、この記事を読まれた方に深く感謝します。

*1:こんなタイトルの記事を書いておいてなんですが、各社・各人における仕事内容の分散が大きいため、機械学習エンジニアとデータサイエンティストの分類モデルを作るような行為は有用性が低いと思っています。