andrewekhalel/MLQuestions

機械学習とコンピュータビジョンエンジニアリングのポジションのためのテクニカルインタビューの質問のコレクション。

1)バイアスと分散のトレードオフは何ですか?

モデルが単純すぎてパラメータが非常に少ない場合、バイアスが高く分散が低い可能性があります。 一方、モデルに多数のパラメータがある場合、高い分散と低いバイアスが発生します。 そのため、データを過度に適合させたり過小評価したりすることなく、適切なバランスを見つける必要があります。

2)勾配降下法とは何ですか?

3)オーバーフィッティングとアンダーフィッティング、そしてそれらと戦う方法を説明しますか?

4)次元の呪いとどのように戦うのですか?

  • 手動フィーチャ選択
  • 主成分分析(PCA)
  • 多次元スケーリング
  • 局所線形埋め込み

5) 正則化とは何ですか、なぜそれを使用するのですか、そして一般的な方法のいくつかの例を挙げますか?

過剰適合のリスクを回避するために、より複雑または柔軟なモデルの学習を阻止する手法。例

  • Ridge(L2norm)
  • Lasso(L1norm)
    ridge回帰の明らかな欠点は、モデル解釈可能性です。 これは、ゼロに非常に近い、最も重要でない予測子の係数を縮小します。 しかし、それは決してそれらを正確にゼロにすることはありません。 つまり、最終的なモデルにはすべての予測子が含まれます。 ただし、lassoの場合、調整パラメータλが十分に大きい場合、l1ペナルティは、係数推定値の一部を強制的にゼロに正確に等しくする効果があります。 したがって、lasso法は変数選択も実行し、スパースモデルを生成すると言われています。

6) 主成分分析(PCA)を説明しますか?

7)ニューラルネットワークでReLUがSigmoidよりも優れており、頻繁に使用されているのはなぜですか?

ランダムに初期化された重み(または正規化された)を持つネットワークを想像し、ネットワークのほぼ50%がReLuの特性(xの負の値の場合は0を出力)のため これは、より少ないニューロンが発火している(疎活性化)とネットワークが軽いことを意味します。

8)(1次元)CNNの各層のストライドSとカーネルサイズが与えられた場合、ネットワーク内の特定のノードの受容場を計算する関数を作成します。 これは、CNN内のニューロンに実際に接続する入力ノードの数を見つけるだけです。

9)画像/行列上に接続されたコンポーネントを実装します。

10)c++でスパース行列クラスを実装します。

11)積分画像を計算する関数を作成し、積分画像から面積の合計を取得する別の関数を作成します。

12)ノイズの多いサンプルから平坦な平面を推定しようとすると、どのように外れ値を削除しますか?

13)CBIRはどのように機能しますか?

14)画像登録はどのように機能しますか? 疎対密な光の流れなど。

15)畳み込みがどのように機能するかを説明します。 入力がグレースケールとRGB画像の場合はどうなりますか? 次のレイヤーの形状を決定するのは何ですか?

16)オブジェクトの周りのすべての角度で撮影された画像と深度センサーの測定値からオブジェクトの3Dモデルを作成する方法について話してく 17)特別な関数を使用せずにSQRT(const double&x)を実装し、基本的な算術演算だけを実装します。

18)ビットストリングを逆にします。

19)できるだけ効率的に非最大抑制を実装します。

20)リンクされたリストを所定の位置に反転します。

21)データ正規化とは何ですか?

データ正規化は非常に重要な前処理ステップであり、逆伝播中のより良い収束を保証するために、特定の範囲に収まるように値を再スケールするため 一般に、各データポイントの平均を減算し、その標準偏差で除算することになります。 これを行わないと、いくつかの機能(大きさの高いもの)はコスト関数でより重み付けされます(大きさの高い機能が1%変化すると、その変化はかなり大き データの正規化により、すべてのフィーチャが均等に重み付けされます。

22)FCレイヤーだけではなく、画像に畳み込みを使用するのはなぜですか?

まず、畳み込みは画像からの空間情報を保存、エンコードし、実際に使用します。 FCレイヤーのみを使用した場合、相対的な空間情報はありません。 第二に、畳み込みニューラルネットワーク(Cnn)は、各畳み込みカーネルが独自のフィルタ/特徴検出器として機能するため、部分的に組み込まれた変換分散を持

23)CNNs変換を不変にするものは何ですか?

上記で説明したように、各畳み込みカーネルは独自のフィルタ/特徴検出器として機能します。 だから、あなたがオブジェクトの検出を行っているとしましょう、我々はとにかく画像全体にスライディングウィンドウの方法で畳み込みを適用す

24)なぜ分類Cnnにmax-poolingがあるのですか?

コンピュータビジョンにおける役割のために。 CNNでMax-poolingを使用すると、フィーチャマップがpooling後に小さくなるため、計算を減らすことができます。 あなたは最大の活性化を取っているので、あなたはあまりにも多くの意味情報を失うことはありません。 また、max-poolingがCnnにより多くの翻訳の分散を与えることに少し貢献するという理論もあります。 Max-poolingの利点について、Andrew Ngのこの素晴らしいビデオをチェックしてください。

25)セグメンテーションCnnは通常、エンコーダ-デコーダスタイル/構造を持っているのはなぜですか?

符号化器CNNは基本的に特徴抽出ネットワークと考えることができ、復号器はその情報を使用して特徴を”デコード”し、元の画像サイズにアップスケー

26)残留ネットワークの意義は何ですか?

残留接続が行った主なことは、前のレイヤーからのフィーチャへの直接アクセスを可能にすることでした。 これにより、ネットワーク全体での情報の伝播がはるかに容易になります。 これについての非常に興味深い論文は、ローカルスキップ接続を使用すると、ネットワーク全体に伝播する複数のパスを特徴とするアンサンブルマルチパス構造のタイプがネットワークに与える方法を示しています。

27)バッチ正規化とは何ですか?

深層ニューラルネットワークの学習は、前の層のパラメータが変化するにつれて、各層の入力の分布が学習中に変化するという事実によって複雑にな アイデアは、それらがゼロの平均出力活性化と1の標準偏差を有するように、各層の入力を正規化することです。 つまり、そのミニバッチのみの平均と分散を計算してから、正規化します。 これは、ネットワークへの入力がどのように標準化されるかに類似しています。 これはどのように役立ちますか? 私たちは、ネットワークへの入力を正規化することは、それが学ぶのに役立つことを知っています。 しかし、ネットワークは単なる一連のレイヤーであり、あるレイヤーの出力が次のレイヤーへの入力になります。 つまり、ニューラルネットワーク内の任意の層を、より小さな後続のネットワークの最初の層と考えることができます。 一連のニューラルネットワークが互いに供給すると考え,活性化関数を適用する前に一つの層の出力を正規化し,それを次の層(サブネットワーク)に供給する。

28)なぜいくつかの大きなものではなく、3×3のような多くの小さなたたみ込みカーネルを使用するのですか?

これはVGGNetの論文で非常によく説明されています。 2つの理由があります:まず、同じ受容フィールドを取得し、より空間的なコンテキストをキャプチャするために、いくつかの大きなものではなく、いくつかの小さなカーネルを使用することができますが、より小さなカーネルでは、より少ないパラメータと計算を使用しています。 第二に、より小さなカーネルではより多くのフィルタを使用するため、より多くの活性化関数を使用できるため、CNNによって学習されるより差別的なマ

29)検証セットとテストセットが必要なのはなぜですか? それらの違いは何ですか?

モデルをトレーニングするとき、利用可能なデータを三つの別々のセットに分割します:

  • 学習データセットは、モデルのパラメータを近似するために使用されます。 ただし、トレーニングセットで達成した精度は、モデルが新しいサンプルで正確であるかどうかを予測するために信頼できません。
  • 検証データセットは、トレーニングデータセットの一部ではなかった例でモデルがどの程度うまく機能するかを測定するために使用されます。 検証データで計算されたメトリックは、モデルのハイパーパラメータを調整するために使用できます。 しかし、検証データを評価し、それらのスコアに基づいて決定を下すたびに、検証データからモデルに情報が漏らされています。 評価が多ければ多いほど、より多くの情報が漏洩します。 したがって、検証データに過度に適合することになり、検証スコアは現実世界でのモデルの動作を予測するために信頼できなくなります。
  • テストデータセットは、以前には見られなかった例でモデルがどの程度うまく機能するかを測定するために使用されます。 これは、検証セットを使用してパラメータを調整した後にのみ使用する必要があります。したがって、テストセットを省略して検証セットのみを使用する場合、検証スコアはモデルの一般化の良い推定値ではありません。

    30)層別交差検証とは何ですか?

    交差検証は、学習セットと検証セットの間でデータを分割するための手法です。 一般的な交差検証では、この分割はランダムに行われます。 ただし、層別交差検証では、分割により、学習データセットと検証データセットの両方のカテゴリの比率が保持されます。

    たとえば、カテゴリAの10%とカテゴリBの90%を持つデータセットがあり、層別交差検証を使用する場合、トレーニングと検証で同じ比率になります。 対照的に、単純な交差検証を使用すると、最悪の場合、検証セットにカテゴリAのサンプルがないことがわかります。

    層別交差検証は、次のシナリオで適用できます:

    • 複数のカテゴリを持つデータセットで。 データセットが小さく、カテゴリが不均衡になるほど、層別交差検証を使用することがより重要になります。異なる分布のデータを持つデータセット上の
    • 。 たとえば、自動運転用のデータセットでは、昼と夜の間に撮影された画像があるかもしれません。 両方のタイプがトレーニングと検証に存在することを保証しない場合、一般化の問題が発生します。

    31) アンサンブルは、通常、個々のモデルよりも高いスコアを持っているのはなぜですか?

    アンサンブルは、単一の予測を作成するための複数のモデルの組み合わせです。 より良い予測を行うための重要なアイデアは、モデルが異なるエラーを発生させるべきであるということです。 このようにして、あるモデルの誤差は他のモデルの正しい推測によって補償されるため、アンサンブルのスコアは高くなります。

    アンサンブルを作るためには多様なモデルが必要です。 多様性は以下によって達成することができます:

    • 異なるMLアルゴリズムを使用します。 たとえば、ロジスティック回帰、k-最近傍、および決定木を組み合わせることができます。
    • 学習のためにデータの異なるサブセットを使用します。 これは袋詰めと呼ばれます。
    • は、トレーニングセットの各サンプルに異なる重みを与えます。 これが反復的に行われ、アンサンブルの誤差に応じてサンプルを重み付けする場合、それはブーストと呼ばれます。データサイエンス競技への多くの勝利ソリューションは、アンサンブルです。 しかし、実際の機械学習プロジェクトでは、エンジニアは実行時間と精度のバランスを見つける必要があります。

    32) 不均衡なデータセットとは何ですか? あなたはそれに対処するいくつかの方法を挙げることができますか?

    不均衡なデータセットは、ターゲットカテゴリの比率が異なるデータセットです。 たとえば、いくつかの病気を検出する必要がある医療用画像を含むデータセットには、通常、陽性サンプルよりも多くの陰性サンプルがあります—画像の98%が病気のないもので、画像の2%が病気のあるものとします。

    不均衡なデータセットに対処するためのさまざまなオプションがあります:

    • オーバーサンプリングまたはアンダーサンプリング。 トレーニングデータセットから一様分布を使用してサンプリングする代わりに、他の分布を使用して、モデルがよりバランスの取れたデータセットを見
    • 既存のデータを制御された方法で変更することにより、頻度の低いカテゴリにデータを追加できます。 例のデータセットでは、病気で画像を反転したり、病気が見えるように画像のコピーにノイズを追加したりすることができます。
    • 適切なメトリックを使用します。 この例のデータセットでは、常に否定的な予測を行うモデルがある場合、98%の精度が得られます。 不均衡なデータセットを使用する場合に、モデルの精度をよりよく説明する精度、リコール、Fスコアなどの他のメトリックがあります。

    33) 教師あり学習、教師なし学習、強化学習の違いを説明できますか?

    教師あり学習では、入力データと出力データの関係を学習するためにモデルを訓練します。 教師あり学習を行うには、ラベル付きデータが必要です。

    教師なし学習では、ラベルのないデータしかありません。 モデルはデータの表現を学習します。 教師なし学習は、ラベル付けされていないデータが多く、ラベル付けされたデータが少ない場合に、モデルのパラメータを初期化するために頻繁に使用され 最初に教師なしモデルを訓練し、その後、モデルの重みを使用して教師ありモデルを訓練します。

    強化学習では、モデルにはいくつかの入力データと、モデルの出力に応じた報酬があります。 このモデルは、報酬を最大化するポリシーを学習します。 強化学習は、囲碁や古典的なアタリのビデオゲームなどの戦略的なゲームにうまく適用されています。

    34)データ増強とは何ですか? あなたはいくつかの例を挙げることができますか?

    データ増強は、ターゲットを変更しない、または既知の方法で変更するように既存のデータを変更することにより、新しいデータを合成する技術です。

    コンピュータビジョンは、データ増強が非常に有用な分野の一つです。 画像には多くの変更があります:

    • サイズ変更
    • 水平または垂直反転
    • 回転
    • ノイズの追加
    • 変形
    • 色の変更各問題には、カスタマイズされたデータ拡張パイプラインが必要です。 たとえば、OCRでは、フリップを実行するとテキストが変更され、有益ではありません。

    35) チューリングテストとは何ですか?

    チューリングテストは、人間レベルの知性と一致する機械の能力をテストする方法です。 マシンは、それがテストに合格したとき、それはインテリジェントとして考えられていることを人間の知性に挑戦するために使用されます。 しかし、機械は、人間を模倣するために人々について十分に知らずに知的と見なすことができます。

    36)精度とは何ですか?

    精度(正の予測値とも呼ばれます)は、取得されたインスタンス間の関連するインスタンスの割合です
    精度=真陽性/(真陽性+偽陽性)

    37) リコールとは何ですか?

    Recall(感度とも呼ばれます)は、関連するインスタンスの合計量に対する検索された関連するインスタンスの割合です。リコール=真陽性/(真陽性+偽陰性)

    38) F1-scoreを定義します。

    精度とリコールの加重平均です。 これは、偽陽性と偽陰性の両方を考慮に入れます。 これは、モデルのパフォーマンスを測定するために使用されます。
    F1-Score=2*(precision*recall)/(precision+recall)

    39)コスト関数とは何ですか?

    コスト関数は、ニューラルネットワークの誤差係数を定量化するスカラー関数です。 コスト関数を下げ、ニューラルネットワークを良くします。 例:画像を分類するために設定されたMNISTデータセット、入力画像は数字2であり、ニューラルネットワークは誤って3

    40であると予測します)異なる活性化ニュー

    • 線形ニューロン
    • バイナリしきい値ニューロン
    • 確率的バイナリニューロン
    • シグモイドニューロン
    • Tanh関数
    • 整流線形ユニット(ReLU)

    41) 学習率を定義します。

    学習率は、損失勾配に関してネットワークの重みをどれだけ調整するかを制御するハイパーパラメータです。

    42)運動量(w.r.t nn最適化)とは何ですか?

    Momentumは、最適化アルゴリズムが最後のステップを記憶し、その割合を現在のステップに追加することができます。 このようにして、アルゴリズムが平坦な領域、または小さな局所最小値に固執していても、それは出て真の最小値に向かって続けることができます。

    43)バッチ勾配降下法と確率勾配降下法の違いは何ですか?

    Batch gradient descentは、データセット全体を使用して勾配を計算します。 これは凸、または比較的滑らかな誤差多様体に最適です。 この場合、ローカルまたはグローバルのいずれかの最適解に向かっていくことになります。 さらに、アニールされた学習率が与えられたバッチ勾配降下は、最終的にはそれにある最小値が魅力の流域であることを見つけるでしょう。

    Stochastic gradient descent(SGD)は、単一のサンプルを使用して勾配を計算します。 SGDは、多くの極大値/最小値を持つ誤差多様体に対して、うまく機能します(うまくはありませんが、バッチ勾配降下よりも優れています)。 この場合、減少したサンプル数を使用して計算されたややノイズの多い勾配は、モデルを局所最小値から、より最適な領域にジャークする傾向があります。

    44)エポック対バッチ対反復。

    エポック:すべてのトレーニング例の一つの前方パスと一つの後方パス
    バッチ:一つのパスで一緒に処理された例(前方と後方)
    反復:トレーニング例の数/バッチサイズ

    45)消失勾配とは何ですか?

    隠れ層が増えていくにつれて、下位層に情報を渡す際の逆伝播の有用性はますます低くなります。 事実上、情報が戻されると、勾配は消失し始め、ネットワークの重みに対して小さくなります。

    46)ドロップアウトとは何ですか?

    ドロップアウトは、ニューラルネットワークが過適合するのを防ぐ簡単な方法です。 これは、ニューラルネットワーク内のユニットの一部から脱落しています。 それは、自然がそれらの共適応を強化するのではなく、異なる遺伝子を組み合わせることによって子孫を産生する自然な再生プロセスに似ています。

    47)LSTMを定義します。

    長期短期記憶–長期依存の問題に対処するために明示的に設計されています,何を覚えておくべきか、何を忘れるべきかの状態を維持することによ

    48)LSTMの主要コンポーネントを一覧表示します。

    • Gates(forget,Memory,update&Read)
    • tanh(x)(-1~1の範囲の値)
    • Sigmoid(x)(0~1の範囲の値)1)

    49) RNNの亜種を一覧表示します。

    • LSTM:長期短期記憶
    • GRU:ゲート反復ユニット
    • エンドツーエンドネットワーク
    • メモリネットワーク

    50) Autoencoderとは何ですか、いくつかのアプリケーションに名前を付けます。

    オートエンコーダは、基本的に与えられたデータの圧縮形式を学習するために使用されます。 いくつかのアプリケーションは、

    • データノイズ除去
    • 次元削減
    • 画像再構成
    • 画像の色付けを含みます

    51) GANの構成要素は何ですか?

    52) boostingとbaggingの違いは何ですか?

    Boostingとbaggingは似ていますが、どちらもensembling技術であり、多くの弱い学習者(推測よりもほとんど優れている分類子/回帰子)が(平均化または最大投票によって)組み合 袋詰めとは、データセットのブートストラップサンプルを(置換して)取得し、各サンプルが(潜在的に)弱い学習者を訓練することを意味します。 一方、Boostingはすべてのデータを使用して各学習者を訓練しますが、前の学習者によって誤って分類されたインスタンスにはより多くの重みが与えられ、後の学習者はトレーニング中により多くの焦点を当てます。

    53)ROC曲線がどのように機能するかを説明します。

    ROC曲線は、さまざまなしきい値における真陽性率と偽陽性率のコントラストをグラフィカルに表現したものです。 これは、モデルの感度(真陽性)とフォールアウトとの間のトレードオフ、または誤警報(偽陽性)を引き起こす確率のプロキシとしてよく使用されます。

    54)タイプIとタイプIIのエラーの違いは何ですか?

    タイプIエラーは偽陽性であり、タイプIIエラーは偽陰性です。 簡単に言えば、タイプIエラーは、何かが起こっていないときに何かが起こったと主張することを意味し、タイプIIエラーは、実際に何かが起こっているときに何も起こっていないと主張することを意味します。これについて考えるための巧妙な方法は、タイプIIのエラーは、あなたが彼女が赤ちゃんを運んでいない妊娠中の女性を伝えることを意味しながら、彼

    55)生成モデルと判別モデルの違いは何ですか?

    生成モデルはデータのカテゴリを学習し、判別モデルは単にデータの異なるカテゴリ間の区別を学習します。 判別モデルは、一般的に分類タスク上の生成モデルよりも優れています。

    貢献

    貢献は最も歓迎されています。

    1. リポジトリをフォークします。
    2. プルリクエストを開きます。

コメントを残す

メールアドレスが公開されることはありません。