ディープラーニング講座事前テスト

数学(線形代数・微分)空欄(あ)~(え)に当てはまる式として最も適当な組み合わせを、選択肢 1. ~ 6. から選べ。

  • ベクトル x に対して、行列 W とベクトル b によるアフィン変換を考える。
    すなわち、u=Wx+bである。このとき、xn次元のベクトルであるならば、Wm行(あ)列の行列でなくてはならない。また、計算後のuは(い)次元のベクトルである。
  • ベクトル x1x2に対して、内積y=x1Tx2x1による一階偏微分はyx1=(う)である.
  • シグモイド関数y=11+exp-xxによる一階微分をyで表すとdydx=(え)である。
  1. (あ)= m (い)= m (う)= x2T (え)= 1-y2
  2. (あ)= m (い)= n (う)= x2 (え)= 1-y2
  3. (あ)= m (い)= n (う)= x2 (え)= y1-y
  4. (あ)= n (い)= m (う)= x2 (え)= y1-y
  5. (あ)= n (い)= m (う)= x2T (え)= y1-y
  6. (あ)= n (い)= n (う)= x2T (え)= 1-y2

数学(確率・統計・情報理論)空欄(あ)~(え)に当てはまる式や単語として最も適当な組み合わせを、選択肢 1.6. から選べ。

  • 「コイン A を投げる」という試行に対して、「表が出る」という事象は確率 p で起こるとする。
    「コイン A を投げる」という試行を n 回繰り返して、「表が出る」回数が k 回である確率は(あ)である。
  • 平均ベクトルを μ 、分散をσ2とする等分散正規分布の確率密度関数は px;μ,σ2=(い)である(ただし、 x のサイズは n であるとする)。このとき、モデルに px;μ,σ2を仮定した場合の最尤推定は、x の観測に対する μ の(う)誤差最小化問題に帰着できる。
  • 離散確率分布 pxqx のクロスエントロピーは Hp,q=(え)である。
  1. (あ)= nCkpn-k1-pk (い)= 1 2πσ2n exp - 1 2σ2 || x-μ || 1 (う)= 絶対 (え)= Σxpxlogqx
  2. (あ)= nCkpn-k1-pk (い)= 1 2πσ2n exp - 1 2σ2 || x-μ || 1 (う)= 絶対 (え)= -Σxpxlogqx
  3. (あ)= nCkpn-k1-pk (い)= 1 2πσ2n exp - 1 2σ2 || x-μ || 22 (う)= 二乗 (え)= Σxpxlogqx
  4. (あ)= nCkpk1-pn-k (い)= 1 2πσ2n exp - 1 2σ2 || x-μ || 1 (う)= 絶対 (え)= -Σxpxlogqx
  5. (あ)= nCkpk1-pn-k (い)= 1 2πσ2n exp - 1 2σ2 || x-μ || 22 (う)= 二乗 (え)= Σxpxlogqx
  6. (あ)= nCkpk1-pn-k (い)= 1 2πσ2n exp - 1 2σ2 || x-μ || 22 (う)= 二乗 (え)= -Σxpxlogqx

注意:

ソースコードの [~~~(あ)~~~] は、バウンディングボックスを想定しています。

Python(基本文法・クラス)空欄(あ)~(え)に当てはまるものとして最も適当な組み合わせを、選択肢 1. ~ 6. から選べ。

  • 引数として与えられた二つの数値の和を計算して返す関数を実装せよ。
    def add2(x, y):
      [~~~(あ)~~~] x + y
    
  • ボディマス指数(BMI)を引数として、メッセージ文を出力する関数を実装せよ。ただし、出力されるメッセージの要件は以下である。
    • 18.5 未満 -> 「やせすぎ」
    • 18.5 以上 25.0 未満 -> 「標準体重」
    • 25.0 以上 -> 「太り過ぎ」
    def message(bmi):
      if bmi < 18.5:
        print('やせすぎ')
      [~~~(い)~~~] bmi < 22.0:
        print('標準体重')
      else:
        print('太り過ぎ')
    
  • 整数 n を引数として、 1 から n までの整数を一行ずつ出力するような関数を実装せよ。
    def count_num(n):
      for i in range(1, [~~~(う)~~~]):
        print(i)
    
  • インスタンス生成時に「bar」と表示されるようなクラスを実装せよ。
    class Foo:
      def [~~~(え)~~~](self):
        print('bar')
      def func(self, s):
        print('This method is sample.')
        print('The argument is' + s)
    
    inst1 = Foo() # bar と出力される
    
  1. (あ)= return (い)= elif (う)= n + 1 (え)= __init__
  2. (あ)= return (い)= else if (う)= n + 1 (え)= _init_
  3. (あ)= return (い)= elif (う)= n (え)= __init__
  4. (あ)= answer (い)= else if (う)= n (え)= _init_
  5. (あ)= answer (い)= elif (う)= n (え)= _init_
  6. (あ)= answer (い)= else if (う)= n + 1 (え)= __init__

注意:

ソースコードの [~~~(あ)~~~] は、バウンディングボックスを想定しています。

Python(NumPy)空欄(あ)~(え)に当てはまる式やコマンドとして最も適当な組み合わせを、選択肢 1. ~ 6. から選べ。

  • Numpy 配列 arr から、奇数行奇数列だけを一度に取り出して、変数 ans に代入せよ。ただし、最も上の行を 0 行目として、最も左の列を 0 列目とする。
    import numpy as np
    
    arr = np.arange(100).reshape(10, -1)
    ans = [~~~(あ)~~~]
    
  • Numpy 配列 arr を列方向(縦方向)に加算して、サイズ 10 の一次元配列を作り、変数 ans に代入せよ。
    import numpy as np
    
    arr = np.arange(100).reshape(10, -1)
    ans = [~~~(い)~~~]
    
  • Numpy 配列 arr の行と列を入れ替えて(転置行列を作って)、変数 ans に代入せよ。
    import numpy as np
    
    arr = np.arange(100).reshape(10, -1)
    ans = [~~~(う)~~~]
    
  • Numpy 配列 arr において、要素が最大値をとるインデックスを求めて、変数 ans に代入せよ。
    import numpy as np
    
    arr = np.array([1, 2, 3, 4, 5, 4, 3, 2, 1])
    ans = [~~~(え)~~~]
    
  1. (あ)= arr[1:2, 1:2] (い)= arr.sum(axis=0) (う)= arr.transpose(1, 0) (え)= arr.max()
  2. (あ)= arr[1:2, 1:2] (い)= arr.sum(axis=1) (う)= arr.transpose(0, 1) (え)= arr.max()
  3. (あ)= arr[1:2, 1:2] (い)= arr.sum(axis=1) (う)= arr.transpose(0, 1) (え)= arr.argmax()
  4. (あ)= arr[1::2, 1::2] (い)= arr.sum(axis=0) (う)= arr.transpose(1, 0) (え)= arr.max()
  5. (あ)= arr[1::2, 1::2] (い)= arr.sum(axis=0) (う)= arr.transpose(1, 0) (え)= arr.argmax()
  6. (あ)= arr[1::2, 1::2] (い)= arr.sum(axis=1) (う)= arr.transpose(0, 1) (え)= arr.argmax()

ML(知識)空欄(あ)~(え)に当てはまる式や単語として最も適当な組み合わせを、選択肢 1. ~ 6. から選べ。

  • 機械学習モデルの性能は、(あ)データを利用して計算した誤差や精度などを用いて比較すべきである。
  • ロジスティック回帰は,(い)のタスクを解くのに適したモデルである
  • サポートベクターマシンは、マージンが(う)になるように学習するのが一般的である。
  • (え)における弱学習器の学習は、並列化可能である。
  1. (あ)= 検証 (い)= 値域が実数全体であるような回帰 (う)= 最大 (え)= アダブースト
  2. (あ)= 検証 (い)= クラス分類 (う)= 最小 (え)= ランダムフォレスト
  3. (あ)= 検証 (い)= クラス分類 (う)= 最大 (え)= ランダムフォレスト
  4. (あ)= 訓練 (い)= 値域が実数全体であるような回帰 (う)= 最小 (え)= ランダムフォレスト
  5. (あ)= 訓練 (い)= 値域が実数全体であるような回帰 (う)= 最大 (え)= アダブースト
  6. (あ)= 訓練 (い)= クラス分類 (う)= 最小 (え)= アダブースト

ML(ライブラリ)空欄(あ)~(え)に当てはまるものとして最も適当な組み合わせを、選択肢 1. ~ 6. から選べ。

  • 以下は scikit-learn を利用した(あ)モデルの学習を実行するためのプログラムである。
    from sklearn.datasets import load_iris # scikit-learn に内蔵されたサンプルデータ
    from sklearn.linear_model import LogisticRegression
    from sklearn.preprocessing import StandardScaler
    from sklearn.model_selection import [~~~(い)~~~]
    from sklearn.metrics import accuracy_score
    
    X, y = load_iris(return_X_y=True)
    X_train, X_valid, y_train, y_valid = [~~~(い)~~~](X, y) #訓練データと検証データの分割
    stdsc = StandardScaler()
    stdsc.fit_transform(X_train)
    clf = LogisticRegression(random_state=1234)
    clf.[~~~(う)~~~](X, y) # 学習を実行
    
    stdsc.transform(X_valid)
    y_pred = clf.[~~~(え)~~~](X_valid) # 予測
    acc = accuracy_score(y_valid, y_pred)
    
  1. (あ)= 線形回帰 (い)= hold_out (う)= fit (え)= predict
  2. (あ)= 線形回帰 (い)= hold_out (う)= transform (え)= infer
  3. (あ)= 線形回帰 (い)= train_test_split (う)= transform (え)= infer
  4. (あ)= ロジスティック回帰 (い)= hold_out (う)= fit (え)= infer
  5. (あ)= ロジスティック回帰 (い)= train_test_split (う)= transform (え)= predict
  6. (あ)= ロジスティック回帰 (い)= train_test_split (う)= fit (え)= predict