[[245589]] ジョージ・セイフ氏はこれまで、主にデータサイエンスや機械学習関連の職種を対象に、数多くのテクノロジー大手企業で面接を行ってきました。 「機械学習の面接は最悪だ。面接官の質問に唖然とするまで、自分はすべてわかっていると思っている。でも、実際はもっとうまくできるはずだ。」何度も面接を受けた後、彼はため息をついた。この記事では、面接の過程で自分が尋ねられた質問を共有するだけでなく、読者にそれらの質問に答えるためのアイデアを提供し、面接官が聞きたい答えも示し、同じように夢の仕事に就きたいと熱望している他の人々がうまく内定を獲得できるよう手助けしたいと考えています。 ここ数か月間、私は多くの企業で面接を行ってきましたが、その多くはデータサイエンスと機械学習の分野の初級職です。私は機械学習とコンピュータービジョンの修士課程の学生で、数か月以内に卒業する予定です。私のこれまでの経験のほとんどは学術研究に関連したもので、スタートアップ企業(機械学習とは関係ない)でも 8 か月間勤務しました。私が面接を受けた職種には、データサイエンス、一般的な機械学習、自然言語処理、コンピュータービジョンなどの仕事が含まれていました。私はAmazon、Tesla、Samsung、Uber、Huaweiなどの大企業だけでなく、初期段階から成熟段階まで多くのスタートアップ企業と面接しました。そのうちのいくつかはすでに資金調達を受けています。 面接で私が尋ねられた質問とそれに対する私の答えを皆さんにシェアしたいと思います。よくある質問もあれば、新しい質問もあります。オンラインで利用できるリソースは多数あるため、一般的な問題を簡単にリストし、あまり一般的ではないが扱いにくい問題についても詳しく説明します。この記事を読んで、機械学習の面接に合格し、夢の仕事に就けることを願っています。 - バイアスと分散の間のトレードオフは何ですか?
勾配降下法とは何ですか? 過剰適合と不足適合とは何か、またそれらに対処する方法を説明してください。 次元の呪いと戦うにはどうすればいいでしょうか? 正規化とは何ですか? なぜ正規化を使用するのですか? また、一般的な方法の例をいくつか示します。 主成分分析 (PCA) とは何か説明してください。 ニューラル ネットワークでは、なぜ ReLU が Sigmoid よりも優れており、より頻繁に使用されるのでしょうか? データの正規化とは何ですか? なぜそれが必要なのですか?この問題は特に強調する必要があると思います。データの正規化は、バックプロパゲーション中により良い収束を確実にするために値を再スケールするための非常に重要な前処理手順です。一般的なアプローチは、各データ ポイントの平均を減算し、標準偏差で割ることです。これを行わないと、一部の特徴 (大きさの大きい特徴) がコスト関数でより重み付けされることになります (大きさの大きい特徴が 1% 変化した場合、実際には変化はかなり大きくなりますが、より小さな特徴の場合、その影響はそれほど顕著ではありません)。データの正規化により、すべての機能に均等に重み付けできるようになります。次元削減とは何か、位置はどこで使用されるのか、その利点は何なのかを説明してください。次元削減とは、重要な特徴を持つ主要な変数のセットを取得することで、特徴変数の数を削減するプロセスです。特徴の重要性は、特徴変数がデータ内の情報にどの程度貢献するか、また使用している手法によって決まります。どのテクニックを使用するかは、試行錯誤と個人の好みによって決まります。最初は線形手法から始めて、その後非線形手法に移行するのが一般的です。データセットの次元を削減する利点は次のとおりです。(1) 必要なストレージ スペースの削減、(2) 計算の高速化 (例: 機械学習アルゴリズム)、次元が少ないほど計算が少なくなり、次元が少ないと高次元には適用できないアルゴリズムが可能になります、(3) 冗長な機能の削除、例: 地形のサイズを平方メートルや平方マイルで保存しても意味がありません (データ収集に欠陥があった可能性があります)、(4) データの次元を 2D または 3D に削減して、プロットして視覚化し、より多くの洞察を得ることができます、(5) 機能が多すぎたりモデルが複雑すぎると、過剰適合につながる可能性があります。 データセット内の欠落データや破損データを処理するにはどうすればよいですか?データセット内の欠落または破損したデータを見つけて、それらの行または列を削除したり、他の値に置き換えたりすることができます。 Pandas には、isnull() と dropna() という 2 つの非常に便利なメソッドが用意されており、これらを使用すると、欠落または破損したデータのある列を見つけて、それらの値を削除することができます。無効な値をプレースホルダー値(0など)で埋めたい場合は、fillna() メソッドを使用できます。
- 画像を処理するときに、なぜ FC レイヤーではなく畳み込みを使用するのでしょうか?企業は通常このような質問をしないので、この質問は非常に興味深いです。ご想像のとおり、これはコンピューター ビジョンに重点を置く企業から尋ねられた質問です。この質問に対する答えは 2 つの部分から成ります。まず、畳み込みは画像の空間情報を保存し、エンコードし、実際に使用します。 FC レイヤーのみを使用する場合、関連する空間情報は存在しません。第二に、畳み込みニューラル ネットワーク (CNN) は、各畳み込みカーネルが独自のフィルターおよび特徴検出器と同等であるため、部分的な組み込み変換分散を提供します。
CNN 翻訳が不変である理由は何ですか?前述のように、各畳み込みカーネルは独自のフィルターと特徴検出器です。したがって、オブジェクト検出を実行していると仮定すると、スライディング ウィンドウ方式で画像全体に畳み込みを適用するため、オブジェクトが画像内のどこにあるかは問題になりません。 分類 CNN に最大プーリングがあるのはなぜですか?これは、私がコンピューター ビジョン関連の職種の面接を受けたときに尋ねられた質問でもあります。 CNN での最大プーリングは、プーリング後に特徴マップが小さくなるため、計算量を削減できます。最大限の活性化を行っているため、意味情報はあまり失われません。最大プーリングは CNN にさらなる分散シフトをもたらすという理論もあります。 セグメンテーション CNN には通常、エンコーダーとデコーダーの構造があるのはなぜですか?エンコーダー CNN は基本的に特徴抽出ネットワークと考えることができますが、デコーダーはこの情報を使用して画像のフラグメントを予測します (特徴を「デコード」し、元の画像サイズにアップスケールします)。 残余ネットワークの重要性は何ですか?残余接続の主な目的は、前のレイヤーのフィーチャに直接アクセスできるようにして、ネットワーク全体に情報を伝播しやすくすることです。 バッチ正規化とは何ですか?なぜ機能するのでしょうか?ディープ ニューラル ネットワークのトレーニングは、前のレイヤーのパラメーターが変化すると、トレーニング中に各レイヤーの入力分布が変化するため、複雑です。ここでの考え方は、各レイヤーへの入力を正規化して、平均出力アクティベーションがゼロになり、標準偏差が 1 になるようにすることです。これは各レイヤーの各ミニバッチに対して実行されます。つまり、そのミニバッチの平均と分散のみが計算され、正規化されます。これは、ネットワーク入力を正規化するのと多少似ています。これは何の役に立つのですか?ネットワークへの入力を正規化すると、学習に役立つことがわかっています。しかし、ネットワークは単なる一連のレイヤーであり、あるレイヤーの出力が次のレイヤーの入力になります。これは、ニューラル ネットワーク内の任意のレイヤーを、後続のサブネットワークの最初のレイヤーとして扱うことができることを意味します。これは、互いに入力し合う一連のニューラル ネットワークであると考えられます。ここでは、活性化関数を適用する前に 1 つのレイヤーの出力を正規化し、それを次のレイヤー (サブネットワーク) に入力します。 大きなカーネルではなく、3x3 などの小さなカーネルを多数使用する理由は何ですか? VGGNet の論文ではこの点が非常によく説明されています。これには 2 つの理由があります。まず、同じ受容野を取得してより多くの空間コンテキストをキャプチャするために、複数の小さなカーネルを使用できます。また、小さなカーネルを使用すると、パラメーターと計算が少なくなります。 2 番目に、カーネルが小さいほど、より多くのフィルター、つまりより多くのアクティベーション関数を使用する必要があるため、CNN はより識別力の高いマッピング関数を学習できます。 - このポジションに関連する他のプロジェクトの経験はありますか?このとき、自分の研究の方向性と応募先の企業の事業とのつながりを強調する必要があります。応募先のビジネスや職種に関連した何かをしたり、スキルを習得したりしましたか? 100% 一致する必要はありません。相手に直接価値をもたらすことができることを示すつながりがあれば十分です。
結論は これらはすべて、データ サイエンスと機械学習の職に応募したときに私が遭遇した面接の質問です。この記事を楽しんでいただき、何か新しくて役に立つことを学んでいただければ幸いです。 |