まず第一に、この質問は非常に広範囲にわたります。機械学習にはさまざまな方向性があります。データマイニングに重点を置く企業もあれば、ディープラーニングを好む企業もあります。同様に、対応する職種の中には理論に重点を置くものもあれば、実践に重点を置くものもあります。これらの要因の組み合わせにより、データアナリスト、アルゴリズムエンジニア、機械学習科学者など、機械学習関連の職種が幅広く分布し、一般化が困難になっています。 私はインターン時代に上司に従って機械学習分野の採用と面接を始めました。これまでに約20名の機械学習職の応募者の技術面接に参加してきました。その中には、大学院生(インターンシップ職)や、長年勤務した、または優れた学歴を持つ名門大学の博士号取得者(比較的上級の「科学者」職)もいます。 特定の立場については議論せずに、次の質問に答えたいと思います。1. なぜ専門分野の偏見を避ける必要があるのですか? 2. 面接対象者の知識の広さをどのようにテストしますか? 3. 面接対象者の知識の深さをどのようにテストしますか? 4. 基本的なプログラミングとデータ分析のスキルを確認する必要があるのはなぜですか? 5. 機械学習の面接の成功率を向上させるにはどうすればよいですか? 1. 分野間の偏見や差別を避ける 機械学習は、幅広い学際的範囲とさまざまな分野の深い統合を備えた科目であるため、さまざまなバックグラウンドを持つ面接対象者がいます。先入観を持たないことをお勧めします。数学、統計学、物理学、コンピューターサイエンス、その他の分野の面接官は、それぞれ独自の知識の蓄えを持っています。たとえば、機械学習は実際には統計学習と多くの重複部分があり、最適化(オペレーションズ・リサーチなど)や数学(線形代数など)とも多くの関連性があります。異なる分野の人々は、同じことを似たような、しかし異なる方法で説明したり、異なる名前を使用したりすることがあります。簡単な例を挙げると、統計では変数を予測子と呼び、機械学習では変数を特徴と呼ぶ傾向があります。理解している用語を十分に使えないという理由だけで、面接官が応募者を拒否するケースが多いと聞きますが、これは愚かなことだと私は思います。 私たちのチームを例に挙げると、上司は統計学の博士号を持ち、教授(定量的偏向あり)ですが、私は純粋なコンピューターサイエンスの卒業生です。彼はモデリングに R を使うのが好きですが、私は Python と C++ しか得意ではありません。しかし、この違いがあるからこそ、私たちはよりうまく協力できるのです。彼はさまざまな密度推定法を使ったり、教師なし学習で分布を直接当てはめたりするのが好きだし、私は彼に、Isolation Forests など機械学習の分野で人気のアルゴリズムを数多く紹介することができます。同様に、Python と R にもそれぞれ専門分野があります。たとえば、R は非常に成熟したパッケージであるため、時系列分析に Python を使用するのは R を使用するよりもはるかに困難です。 したがって、分野、名前、プログラミング言語、モデルを説明するためのアイデアが異なるという理由だけで、面接対象者を簡単に拒否すべきではありません。長期的には、私たちの思考はどんどん狭くなっていきますが、ある程度の寛容さがあれば、私たちの思考は広がります。 2. 幅広いテストを通じて候補者の知識を判断する 機械学習プロジェクトには通常、データ処理、モデリング、評価、視覚化、展開などの一連のプロセスが含まれます。インタビュー対象者は各ステップについて基本的な理解を持っていることを期待します。範囲が非常に広いため、まずは短期間でインタビュー対象者の知識の範囲を把握したいと考えています。インタビュー対象者の質を理解するために使用できる、基本的だが古典的な質問はたくさんあります。以下にいくつか例を挙げます。
欠損データの処理方法を例にとると、考えられる回答には、1. 欠損率を分析して、欠損を削除するかどうかを決定する、2. 欠損を平均、最頻値、回帰に置き換える、3. 欠損を 0 などに置き換える、などがあります。たとえば、ディープラーニングが他のモデルよりも優れているかどうかを尋ねる場合、インタビュー対象者は「さまざまな状況に基づいて議論しましょう」と言うことを期待します。インタビュー対象者が「フリーランチ定理はない」と言及できれば、さらにポイントが加算されます。この段階では、詳細な質問はせず、インタビュー対象者の知識の範囲を把握することだけを目的とします。 この種の質問の共通点は、学生であろうと上級科学者であろうと、基本的なレベルの理解は必要ですが、回答自体に標準的な回答がないものが多いため、100% 正しく回答する必要はないということです。ほとんどの場合、この段階で、その人を採用するかどうかの答えはすでに出ています。面接者が間違った回答をしたり、概念の 80% を理解していない場合、合格する可能性は非常に低くなります。 3. 職種や候補者の経歴に基づいてさらに深く掘り下げる 前の段階を経て、私たちは求職者の質についてすでに大まかな判断を下しています。次のステップは、一般的に次の 2 つの質問に基づいて、より深い理解を得ることです。
この段階に入ると、実際にはテンプレートはありません。私たちが現在、保険会社で「保険金詐欺検出」を自動化する機械学習エンジニアを募集しており、その求職者がコンピュータ学部を卒業したばかりの修士課程の学生であるとします。詳しく質問する可能性のあるトピックには、次のようなものがあります。
このタイプの質問の特徴は柔軟性があり、通常は一方向に深く掘り下げます。たとえば、他の回答で言及されている L1 および L2 正則化に関して、インタビュー対象者にホワイトボードに図を描いてもらい、L1 がスパースなソリューションを取得できる理由と、それが埋め込み特徴選択とどのように関連しているかを説明してもらいたい場合があります。このタイプの質問では、求職者が完全に正確または明確に答えることを期待していません。また、プレッシャーや質問に対する求職者の心理的性質を観察したいと考えています。プロセス全体を通して知識の盲点が必ずあるため、私たちは気まずい雰囲気を避けるよう最善を尽くしますので、求職者は過度に緊張する必要はありません。同時に、面接対象者の過去のプロジェクトを理解することで、その職業に対する興味を知ることができます。興味を偽ることは難しいのです。 この段階で、面接対象者が詳細な会話に参加し、私たちが考えたことのないアイデアをいくつか言及できれば、それはプラスになります。 4. 基本的なプログラミングとデータマイニングのスキル 機械学習の職種では、統計学やコンピューターサイエンスのバックグラウンドがあるかどうかに関係なく、モデリングプロセスを避けることはできないため、基本的なプログラミングスキルは必須です。通常、数学や統計学のバックグラウンドを持つ面接対象者には、簡単な小規模プログラム テストを追加で実施します。このような小さなプログラムは、データを読み込んでそれを行列として保存するのと同じくらい単純なものかもしれません。これは、私たちがトラブルを見つけるのが好きなからではなく、機械学習が簡単に紙上の話になりがちで、実践者が最も基本的なプログラミング スキルを欠いているからです。 同様に、モデルからどのような結論を導き出せるかについてもインタビュー対象者と話してもらいます。 Kaggle でタイタニック号のデータセットを処理した後、インタビュー対象者に生存率の関係とその分析方法について話してもらいました。同様に、私たちは最良の答えを求めているわけではなく、求職者がいくつかの単純なモデル結果を説明でき、そこからビジネス価値を引き出せることを期待しています。 5. 面接官に何か得るものを与える & 機械学習面接の準備方法 面接は単なるテストではありません。それは学習プロセスでもあります。機械学習の就職面接に関するヒントをいくつか紹介します。 5.1. ポジションに基づいてプロジェクト計画を準備します。 最初は少し不自然に聞こえるかもしれませんが、私はこのちょっとしたトリックを使って、良い面接のフィードバックと機会を得てきました。今日お話しした保険会社の不正防止グループの面接を受けるとします。機械学習を使用して不正行為と戦う方法についてプロジェクト計画を作成できるとします。このプロセスは、インタビュー対象者にとっても次の能力を鍛える練習になります。a. 論文を読み、ニュース資料を収集する能力、b. 要約して分析する能力、c. 要約する能力。 かつて私が面接を受けた人事関連の職種を例に、機械学習を使用して従業員の離職率を予測する方法について計画を作成しました(数ページを省略し、機密性の高い部分はモザイク処理しています)。 計画では、プロジェクト要件を分析し、関連するソリューションを提案し、フォローアップ計画を提案し、関連する文献をリストすることができます。このような行動により、雇用主はあなたの誠実さだけでなく、あなたの専門知識や問題を独自に分析する能力も見極めることができます。 適切なタイミングで(面接を開始するときや職務内容について話すときなど)、準備した計画を取り出して自分のアイデアについて話し始めます。私はこれを何度か行いました。その結果は驚くべきものでした。なぜなら、受動的から能動的に変わり、質問される側から自分が知っている知識を説明する側になるからです。面接官としては、面接対象者がこのレベルに到達できれば、自信を持って採用できると思います。 5.2. 誠実かつ現実的であること 私たちは皆、科学や工学のバックグラウンドを持っており、専門家は一目見ただけで何かが良いものかどうかを判断できます。このような高度に技術的な主題では、ある知識を理解しているふりをする必要はありません。共感から、ほとんどの人は知識に盲点があり、完璧な答えを期待していないことがわかります。質問の答えが本当にわからないときは、相手がもっとわかりやすく説明してくれるか、よく理解していないことを認めてくれることを心から願ってください。 理解していない分野についてよく知っているふりをした場合、私たちは通常、より詳細な質問をします。あなたは私の注意を引くことに成功しました、そしてその時点から後戻りは本当にできませんでした。同様に、履歴書でも経験を誇張しないようにしてください。ナイーブベイズしか使ったことがないのに、履歴書では機械学習の専門家だと主張している人を何人も見てきました。面接中に彼らが顔を赤らめていたのを今でも覚えています。この激動の時代において、高収入の機械学習の仕事に就くために、誰もが最低限の誠実さを維持できることを願っています。 5.3. 基本概念を理解していることを確認する 繰り返しになりますが、主題に関する基本的な理解(および基本的な幅広い知識)を確実に身に付けることは、あなたと面接官の両方に対する敬意の表れです。基本的な理解とは何でしょうか? 私の考えは次のとおりです。
これらはどれも単純なことのように聞こえるかもしれませんが、すべて血と涙のプロセスなので、急がないでください。十分な基礎知識があることをどのように確認すればよいでしょうか? 基本的に、周志華教授の「機械学習」の最初の 10 章を理解し、Sklearn の基本的な API を使用してモデリングすることに比較的習熟していれば十分だと思います。しかし、やりすぎには注意してください。応募するポジションが理論科学者のポジションではない場合、数学的な導出にこだわらないでください。これが、プロジェクト計画書を書くことが非常に役立つと言う理由です。文献を読んで要約する過程で、インタビューしたい分野に対する理解が深まり、自信と知識の向上に役立ちます。 5.4. インタビューを楽しむ 技術面接を悪夢や困難なハードルとして扱わないでください。新しく台頭しつつある分野であるため、私たちは皆、これまで苦労してきました。少なくとも私自身は、それがいかに難しいことか理解しています。 機械学習分野の人材は不足しているため、面接官の時間は一般的に貴重です。たとえ最終選考に残れなかったとしても、面接官から学ぶ機会を活用してください。私の視点から言うと、自分の知識のギャップを発見できるだけでなく、本だけでは学びにくい、特定の分野で人気のアルゴリズムやモデルについても知ることができます。面接に備えて関連分野の論文や概要を読んでいれば、合格の可否よりも面接自体の方がはるかに重要になると思います。 |
<<: Meili United のビジネスアップグレードにおける機械学習の応用
>>: ディープニューラルネットワーク (DNN) は人間の大脳皮質の構造をシミュレートしますか?
[[351784]]ビッグデータダイジェスト制作著者: miggyようやく気に入った家が見つかり、...
あなたも数独愛好家ですか? Aakash Jhawar さんは、多くの人と同じように、新しい困難な課...
21 世紀に革命をもたらした技術が一つあるとすれば、それは人工知能です。 Googleの新社長サンダ...
アプリケーションによって処理されるデータの量は増加し続けています。データの増加は、ストレージ機能の拡...
人工知能は徐々に私たちの生活に入り込み、さまざまな分野に応用され、多くの産業に莫大な経済的利益をもた...
[[415688]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
[51CTO.comより引用] 2018年11月30日から12月1日まで、WOT2018グローバル人...
[51CTO.com クイック翻訳] 人工知能が私たちの日常生活に入り込んでいることに気づいています...