Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JDLA E資格 受験体験記 / jdla-dl-engineer-experience

JDLA E資格 受験体験記 / jdla-dl-engineer-experience

2020/06/20 Python機械学習勉強会 in 新潟のLTで発表した内容です。

kasacchiful

June 20, 2020
Tweet

More Decks by kasacchiful

Other Decks in Programming

Transcript

  1. JDLA? E資格? なにそれおいしいの? JDLA: ⼀般社団法⼈ ⽇本ディープラーニング協会 (Japan Deep Learning Association)

    https://www.jdla.org/ 理事⻑: 東京⼤学⼤学院⼯学系研究科 教授 松尾 豊 ⽒ 他、理事にはML/DL関係の会社の⽅や⼤学教授など E資格: 「JDLA Deep Learning for ENGINEER」の通称 概要: 「ディープラーニングを実装するエンジニアの技能を認定する」 他にも「G検定」(JDLA Deep Learning for GENERAL)という、「ディープラーニン グを事業に活かすための知識を有しているか」を検定する試験もある。 「E検定」ではなく、「E資格」 4 / 43
  2. G検定とE資格 G検定 「ディープラーニングに関する知識を有し、事業活⽤する⼈材」 エンジニア以外にも、営業・経営者も結構受験して取得している。 受験料: 12,000円(税別) (⼀般) / 5,000円(税別) (学⽣)

    オンライン開催 (⾃宅受験可能) E資格 「ディープラーニングを実装する⼈材」 エンジニアの技能に特化。 受験料: 30,000円(税別) (⼀般) / 20,000円(税別) (学⽣) 所定の試験会場で受験 G検定は敷居が低いので、まずはG検定で基本的な知識を得る学習を⽬指そう。 5 / 43
  3. 今回の受験内容 E資格受験⽇: 2020年2⽉22⽇ (2020年の第⼀回⽬開催) 費⽤: 30,000円(税別) JDLA認定プログラム: Skillup AI「現場で使えるディープラーニング基礎講座」 https://www.skillupai.com/deep-learning/

    費⽤: 279,000円(税別)(オンライン講座料⾦) 期間: 2019年10⽉15⽇ - 2020年1⽉21⽇(全8講座) 選んだ理由: a. 認定プログラム第1号であり、実績がある b. オンライン受講ができる c. 期間や費⽤も⼀般的であり、サイトに明⽰されていてわかりやすかった 社内での稟議に組み込みやすかった 10 / 43
  4. 認定講座の内容 https://www.skillupai.com/deep-learning/ オンライン講座を受講した。 全8回の講座 各回とも、「事前の予習動画」 + 「講座本編の動画(講師メイン⾳声)」「講座本編の動 画(周りの⾳も拾う)」を視聴。 事前に予習⽤のスライドのほか、サンプルコードもipynb形式で配布されているので、実 際にソースコードを実⾏しながら仕組みを確認できる。

    講座本編の動画は、集合研修終了後2⽇以内に視聴できる。 数学と機械学習に関しては取り扱っていないので、必要な⼈は別の講座も受講されることを お勧めする Skillup AIには、数学講座や機械学習講座が別途⽤意されている。 11 / 43
  5. . DAY1: (2019/10/15) ディープラーニング講座を通しての課題 ディープラーニング基礎 前半 . DAY2: (2019/10/29) ディープラーニング基礎

    後半 . DAY3: (2019/11/12) 学習の最適化 . DAY4: (2019/11/26) ディープラーニングの様々なモデル 畳み込みニューラルネットワーク その他話題 12 / 43
  6. . DAY5: (2019/12/10) 中間発表 オンライン参加者の中間発表は別⽇ (私は12/23) CNNの様々なモデル ⾃⼰符号化器 ⽣成モデル .

    DAY6: (2019/12/24) 機械学習で扱うデータと典型的なタスク 再帰型ニューラルネットワーク . DAY7: (2020/1/7) ⾃然⾔語処理における深層学習 13 / 43
  7. 通し課題 初回の講座にて案内された。 期限内(2020/2/2 2359まで)に、いつでも・何回でも(1⽇3回までを⽬安に)投稿可能。 カタカナ「ア」から「ソ」までの15⽂字の画像分類 学習に使⽤できる画像データ: (28 x 28 で.npy形式で提供)

    学習データは各々200枚、合計3,000枚 TensorFlow / PyTorch等の主要フレームワークを使わずに、「Numpy」で実装 E資格の出題内容が、「Numpy」実装の⽳埋め問題がよく出るため 専⽤の投稿サイトにPG⼀式を投稿 ⇒ 推論⽤データの正答率(Accuracy)98%以上で合格 推論⽤の画像データは⾮公開で、合計14,500枚 「ア」-「オ」: 各々1,300枚 「カ」-「ソ」: 各々800枚 17 / 43
  8. 通し課題でやった⼿順(3) 実装での狙い . 最初の3層NNによる分類を実装して提出し、動作するかどうかと判定結果を得ること。 . CNNによる分類を実装して、精度向上を狙うこと。 . データ拡張を実装して、データの前処理を⾏うこと。 . ドロップアウトを実装して、汎化性能を⾼めること。

    最低でもCNN+データ拡張+ドロップアウトやらないと、条件(正答率98%)を満たせないと思 われる。 . オプティマイザにAdamもしくはRMSpropを実装して、収束を早めること。 . 時間があれば、論⽂掲載⼿法を試すこと。 20 / 43
  9. 実装の狙い (検討項⽬) . 3層NNでの分類 ニューラルネットワーク実装 活性化関数実装 (ReLU) 損失関数実装 (クロスエントロピー) オプティマイザ実装

    (とりあえずSGDかな) 最低限の前処理実装 0..1への変換/reshapeでの⼊⼒データ平滑化 出⼒データのワンホットベクトル化/trainとvalidationへの分割 学習済モデルの保存 (pickle使⽤) 学習済モデルを使⽤しての推論機能実装 学習中の損失と正答率をグラフ化する⽅法の実装 学習経過を⾒ないとうまく学習できたかどうか判断できない 21 / 43
  10. 実装の狙い (検討項⽬) . CNNでの分類 畳み込み層実装 プーリング層実装 . データ拡張 Pillow /

    Augmentor / OpenCV あたりを使⽤してみる . ドロップアウト等の過学習対策 ドロップアウト (Dropout) 実装 バッチ正規化 (Batch Normalization) 実装 (オプション) L2正則化実装 22 / 43
  11. 実装の狙い (検討項⽬) . オプティマイザの改良 RMSprop実装 Adam実装 参考資料: OPTIMIZER ⼊⾨ ~線形回帰からAdamからEveまで

    深層学習の最適化アルゴリズム Adam and vanilla SGD in numpy. Adam - A Method for Stochastic Optimization 23 / 43
  12. 通し課題で⼯夫したところ(2) . メモリ不⾜は⼒技で解決 課題動作のハードウェア要件に「メモリ8GB」が少なくても必要 ⾃⾝所有マシン(メモリ16GB, Docker割当12GB)ではメモリが⾜りなくなった 最終的にはAmazon EC2のメモリ256GBインスタンス(r5a.8xlarge)で学習 私以外の⽅は、モデルサイズを⼩さくしたまま8GBメモリ上のマシンでクリアして いる

    私はtrainデータ全部numpy配列にして、ガリガリ学習繰り返していたので、 メモリ効率は⾮常に悪いプログラムである。generator等使えばメモリ効率は 上がると思われるが、今回はあまり時間かけたくなかったので、メモリ増量と いう⼒技を選んだ。 26 / 43
  13. import numpy as np # ラベルはone-hot ベクトル形式 def mixup(data, labels,

    alpha=1): sample_num = len(data) weights = np.random.beta(alpha, alpha, sample_num) index = np.random.permutation(sample_num) # データを混ぜる x1, x2 = data, data[index] x = np.array([x1[i] * weights[i] + x2[i] * (1 - weights[i]) for i in range(len(weights))]) # ラベルを混ぜる y1 = np.array(labels).astype(np.float) y2 = np.array(np.array(labels)[index]).astype(np.float) y = np.array([y1[i] * weights[i] + y2[i] * (1 - weights[i]) for i in range(len(weights))]) return x, y 31 / 43
  14. 通し課題で⼯夫したところ(7) . ネットワーク構成はCNNのシンプルなもので構成 conv (32) => conv (32) => pool

    => conv (64) => conv (64) => pool => conv (128) => conv (128) => pool => 全結合 (128) => 全結合 (15) ()内の数字はノード数 ドロップアウトではなくBatch Normalizationを使⽤ オプティマイザはAdamを使⽤ NumPyでの構築なので、講座のJupyter Notebookテキストや「ゼロから作るディープラーニ ング」を参考にした。 33 / 43
  15. 通し課題の結果推移(1) . 2019年12⽉23⽇ 354 (中間発表前にとりあえず結果が出るか確認) loss: 2.708532458970803 accuracy:0.05517241379310345 . 2020年1⽉2⽇

    1814 loss:0.16702579318085922 accuracy:0.9727586206896551 . 2020年1⽉3⽇ 2010 loss:1.3238964053911533 accuracy:0.9640689655172414 (この間、「新潟もくもく会」に参加して、データ拡張のパラメータをいろいろ 検討して学習データの検討を⾏う) 34 / 43
  16. 通し課題の結果推移(2) . 2020年1⽉4⽇ 2301 loss:1.043288772051768 accuracy:0.9708275862068966 . 2020年1⽉5⽇ 104 loss:1.116321625064204

    accuracy:0.9797241379310345 (この後、DL確認テストを受ける...) . 2020年1⽉5⽇ 409 loss:1.1189461933825091 accuracy:0.9786206896551725 35 / 43
  17. 受験 2020/2/21 (⾦) or 2020/2/22 (⼟) 2⽇間のうち、いずれかの⽇で受験可能 前回開催時に会場不⾜で東京の受験者が地⽅まで⾏って受験されていたため、その 対策らしい 私は2020/2/22

    (⼟) に受験 CBT-Solutionsのテストセンターで「CBT多肢選択式」形式で受験 受験料: 30,000円(税別) 試験時間: 2時間 37 / 43
  18. 今後の試験⽇程 予定⽇ G検定は参考書籍増えてきたので、合格しやすいと思います。 E資格は今年は開催されないので、来年の合格⽬指して認定プログラムを受講しましょう。 G検定 (年3回: オンラインで実施) 2020年第1回: 3/14 (⼟)

    (終了) 2020年第2回: 7/4 (⼟) (受験料半額で実施/申込締切は6/26(⾦)) 2020年第3回: 11/7 (⼟) E資格 (年2回: 試験会場で実施) 2020年第1回: 2/21 (⾦) or 2/22 (⼟) のいずれか1⽇を選択 (終了) 2020年第2回: 8/29 (⼟) → (中⽌) 2021年第1回: 2/19 (⾦) or 2/20 (⼟) 41 / 43