‫なんてエキサイティングなんでしょう｡
‫画像を時制に合わせたり､ ラベルを時制に合わせたり､ データを準備したり､ TensorFlowハブでモデルを選んだりするのに苦労していたのが嘘のようです｡
‫モデルのコールバックを作成する｡
‫ようやく最初のディープラーニングモデルを学習させる段階になりました｡
‫そこで､ 見出しのトレーニング､ モデルを作ってみましょう｡
‫データを分割したときのことを思い出すと､ 1000枚の画像でトレーニングを開始することになりますが､
‫なぜそうするのでしょうか？
‫では､ ここで右のようにしましょう｡
‫最初のモデルは､ すべてがうまくいっていることを確認するために､ 1000枚の画像で学習させるだけです｡
‫というわけで､ それを目指しています｡
‫実験と実験の間の時間を最短にするためです｡
‫そこで､ まずデータのサブセットから始めて､ このコードがすべて､ つまり壊れるかもしれないことを確認します｡
‫そうだろ？
‫ですから､ 1万枚の画像で長い時間をかけてトレーニングする前に､ それがうまく機能していることを確認したいのです｡ 1千枚の画像でトレーニングするほうが､
‫1万枚の画像よりずっと早く進みますからね｡
‫そして､ 10万枚､ 画像の場合は正味14枚まで増やしても同じことが言えると想像してください｡
‫2百万円｡
‫つまり､ 定義しなければならない変数がもうひとつあるのです｡
‫モデルのトレーニングに入る前に､ エポック数というものがあります｡
‫エポック数とは､ モデルに何回データを通過させるか､ ということです｡
‫そしてパスとは､ 想像するに､ 我々のモデルがそれぞれの犬の画像からパターンを見つけ､ どのパターンがそれぞれのラベルに関連しているかを見ようとすることと同じである｡
‫ここでナンバーエポックに進みましょう｡
‫100に等しい｡
‫そして､ 私たちはここでクールなことをするつもりです｡
‫Harambeの前にあるような小さなスライダーを作成します｡
‫そして､ スライダーを作成し､ 最小値を10､ 最大値を100､ そしてステップを10にします｡
‫あれを見てください｡
‫なんてかっこいいんでしょう｡
‫だから､ 10個のエポックをやろうと思えば､ 10個できるんです｡
‫しかし､ 私たちは100にこだわるつもりです｡ なぜなら､ 私たちは早々に停止したコールバックを手に入れ､ このすべてを一瞬で見届けることができるからです｡
‫しかし､ 本来､ トレーニングパスは何をするものなのでしょう｡
‫基調講演に戻ると､ 1エポックとは､ モデルに1回だけすべての学習データを見る機会を与え､
‫そこから検証を行うことです｡
‫100エポック｡
‫つまり､ モデルに最大100回のチャンスを与えて､ トレーニングデータセットを通過させ､ パターンを把握させるのです｡
‫だから､ パスが何であるかになってくる｡
‫このレイヤーを通過していくんです｡
‫学習用画像をモデルに渡すことにします｡
‫このレイヤーを通過していくんです｡
‫そして､ パターンを学習したモデルが､ どのラベルがどの画像に属するかを推測していくのです｡
‫そして､ 当てが外れるほど損失は大きくなる｡
‫そこで､ アダムの出番です｡
‫国際坂道下降選手権の坂の下の人が､ このモデルに､ エポックごとにどのように推測を改善すればよいかを教えてくれているのを覚えています｡
‫そして､ 私たちのモデルがどの程度の精度なのか､ 丘の下にいる観客の審査員に見てもらうことになります｡
‫繰り返しますが､ もしこれが理解できないのであれば､ 実際にモデルを動かしてみると､ もっと理解できるようになりますよ｡
‫では､ 最終チェックをしてみましょう｡
‫GPUを使用していない場合､ この画像上でのモデルのトレーニングには非常に長い時間がかかるため､ 最終チェックはGPUを使用していることを確認するためにもう一度行います｡
‫冒頭で､ GPUはコードを最大30倍､ 場合によってはそれ以上に高速化できることをお分かりいただけたと思います｡
‫そのコードを書いてみましょう｡
‫まだJPGビューで動作していることを確認します｡
‫だから､ 印刷する｡
‫GPUです｡
‫利用可能です｡
‫そして､ 出発する｡
‫はい｡
‫TPH configが物理デバイスをリストアップする場合｡
‫そして､ CPUの他をチェックしたい｡
‫使用できません｡
‫つまり､ これは上で書いたのと同じコードに過ぎないのです｡
‫しかし､ これを相当な時間で動かすにはGPUが必要です｡
‫はい｡
‫ここで確認することもできた｡
‫それがちょっとした近道のコツだと覚えておいてください｡
‫でも､ ここでこのプリントを見るのはとても楽しいです｡
‫今すぐ
‫ブームです｡
‫GPUを動かし､ エポックをいくつも設定しました｡
‫モデルを学習させる簡単な関数を作ってみましょう｡
‫だから､ ここに書いておこう｡
‫モデルを学習させる関数を作ってみましょう｡
‫そして､ この機能は､ create modelを使ってモデルを作成することになります｡
‫そして､ テンスボードのコールバックをセットアップしてきたいと思います｡
‫当社のテンソルボード機能を使って
‫だからCを作る｡
‫そこで､ 私たちは機能づくりに力を注いでいます｡
‫そうでなければ､ その場しのぎのコードを書くしかないのですが､ そもそも関数を書くということは､ 少し時間はかかりますが､
‫長い目で見れば時間の節約になるのです｡
‫だから､ 電話してください｡
‫学習データ､ 検証データを渡したモデルに対するフィット関数｡
‫学習するエポック数｡
‫どちらが痘痕も残さない｡
‫このスライダーとコールバックは､ 私たちが使いたいヘルパー関数で定義します｡
‫そして最後に､ モデルを返すようにします｡
‫これをマークダウンに変更するのです｡
‫それは驚異的に見えますね｡
‫よし､ ここにしよう｡
‫学習させ､ 学習済みモデルを返す関数を構築する｡
‫それで､ こうなりました｡
‫デフ・トレイン
‫ついにここまで来たか､ という感じです｡
‫これはすごいことです｡
‫最初のディープラーニングとニューラルネットワークをトレーニングしているところです｡
‫そのため､ 与えられたモデルを学習させ､ 学習済みバージョンを返します｡
‫シンプルで良いですね｡
‫覚えておいてほしいのは､ 興奮したからといって､ コミュニケーションの習慣が失われるわけではないということです｡
‫そこで､ モデルを作成することにします｡
‫だから､ モデルイコールにするんです｡
‫ここで､ モデル作成機能の出番となる｡
‫そうそう､ 書いていてとても満足感がありますね｡
‫そして､ モデルをトレーニングするたびに､ 新しいテンスボードセッションを作成しに行くのです｡
‫なぜなら､ テンソル・ボードとテンソル・ボードのコールバックで､ 私たちは実際にこのテンソル・ボードを呼び出すだけだからだ｡
‫そこではコールバックは必要ない｡
‫機能を設定しました｡
‫つまり､ 呼び出されるたびにここに戻ってくれば､ logsの中に現在の日付時刻を持つ新しいフォルダが作成されるわけです｡
‫これは重要なことで､ モデルのトレーニング機能を実行するたびに､ つまり新しいモデルや実験をトレーニングしようとするたびに､
‫ログフォルダを作成して､ モデルのパフォーマンスを追跡できるようにしています｡
‫これは後で､ どの実験が他の実験よりうまくいったかを評価するときに､
‫本当に役に立つものです｡ そして､ 作成したコールバックを渡すデータにモデルを当てはめます｡
‫この関数を使うには､ もっといい方法があるかもしれません｡ しかし､ 私たちはただ､ これが機能するように作っているだけで､
‫初めてモデルを当てはめる段階が終わったら､ また戻って改良することができます｡
‫では､ モデルフィッティングをして､ パスしましょう｡
‫Xは学習データに相当し､ 画像とラベルが含まれるデータバッチと覚えていただければと思います｡
‫つまり､ epochsはnum epochs aになるわけです｡ k. a.
‫このモデルは､ 停止するまでに何回トレーニングデータを見ることができるのでしょうか？
‫あるいは､ 我々のモデルがパターンを見つけるためにトレーニングデータセット全体を通過し､ その後､ 検証データを通過する機会が何回あったのか？
‫VALデータになるのか､ これもデータバンチなのか､ データバッチなのか｡
‫すみません｡
‫そして､ 検証頻度とは､ モデルが発見したパターンを検証セットでテストする頻度である｡
‫この値を1に設定したのは､ トレーニングセットで見つけたパターンを検証データで毎エポックテストさせたいからです｡
‫つまり､ 1つのエポックに1回､ そしてコールバックは､ 上で関数と早期停止で作成したボードに10回です｡
‫ふぁいとー｡
‫そして､ リターンモデルにして､ 少し置きたい｡
‫適合したモデルを返す｡
‫なんてかっこいいんでしょう｡
‫そして今､ 私たちは､ 行くのと同じくらい簡単な方法で､ モデルにデータを当てはめることができます｡
‫モデルは列車モデルと同じです｡
‫関数を作ることで､ 後でいろいろな実験をした後にこの関数を実行することができる､ というメリットがあるんですね｡
‫それで､ 準備はできているのか？
‫さて､ ここでちょっとした豆知識｡
‫初めてモデルを学習する場合､ 特に画像データやその他の種類の大規模データでは､
‫最初のエポックは通常､ 残りの部分と比較して最も時間がかかります｡
‫さて､ これは私たちが書いた関数がデータを取得し､ 初期化されたからです｡
‫つまり､ データをGPUのメモリにロードすることです｡
‫しかし､ より多くのデータを使用すると､ 一般的に時間がかかるため､ 今回は1000枚の画像でスタートしました｡
‫そうして､ 最初のエポックの後｡
‫そうですね｡
‫100を上限とするように設定しています｡
‫最初は2､ 3分かかるかもしれません｡
‫最初のエポックに続き､ その後のエポックも数秒しかかからないはずです｡
‫では､ 準備はいいですね｡
‫一緒に頑張ろうね｡
‫祈っています｡
‫すべての関数は､ 実はこの上の数行のコードに依存しているからです｡
‫うまくいけば､ 3対1ということにしましょう｡
‫あ､ これ見てください｡
‫モバイルネットv2でモデル構築｡
‫祈っています｡
‫あなたもぜひそうしてください｡
‫あ､ そうだ｡
‫始動しています｡
‫ほらね｡
‫これでよしとしよう｡
‫エポック・ワン・オブ・100｡
‫エポック数が100に設定されているため｡
‫つまり､ バッチサイズである25ステップのトレーニングを行うことになります｡
‫つまり､ トレーニングセットには800枚の画像が含まれています｡
‫だから､ 32で割ると25になる｡
‫だから､ バッチサイズ32とバリデーションがあるので､ トレーニングは25ステップなんです｡
‫200÷32にすると､ 四捨五入されてしまうんです｡
‫だから､ 四捨五入して7になったんです｡
‫そのためにバリデーションがあるのです｡
‫学士以上の200枚は32枚なんですね｡
‫そして､ これを確認してください｡
‫これでよしとしよう｡
‫5分くらいで｡
‫で､ ここからが敗因の話｡
‫だから､ 今､ 私たちが作ったものは､ すべてこの上にあるのです｡
‫だから敗因｡
‫だから､ 私たちの目標は､ 損失を最小限に抑えることを忘れないことです｡
‫だって､ 丘の上にいるんですもの｡
‫私たちは高所恐怖症です｡
‫坂の下まで行きたいんです｡
‫損失関数を最小化したいのですか？
‫損失は丘の高さです｡
‫ここに降りてくるんです｡
‫だから､ この数字が下がることを期待しています｡
‫しかし､ 精度は最大限に高めたい｡
‫そうすることで､ モデルがトレーニングしているかどうかがわかるわけです｡
‫パターンを学習しているのであれば､ この損失は減り､ この精度は上がるはずです｡
‫だから､ これは最初のエポックには数分かかる｡
‫ファーストエポックを経てからにしようと思っています｡
‫そして､ このビデオをスピードアップして､ 最初のエポックを過ぎたら､ この後のエポックも見ることになりますから｡
‫GPUを使っているので､ 100分の1のエポック2がかなり早くなりそうですね｡
‫最初の1枚に時間がかかるのは､ それらの画像をすべてGPUのメモリに読み込まなければならないからです｡
‫かなり瞬時に会えますが､ 私の場合は3分くらいでしょうか｡
‫さてさて､ 帰ってきましたよ｡
‫そこで､ ETA（Estimated Time of Arrival）の略で､ 到着予定時刻を表示することにしました｡
‫この最初のエポックでは､ すべてが計画通りに進めば､ あと12秒くらいです｡
‫それで､ 損失が少し減って､ 精度が上がっているのがお分かりいただけると思います｡
‫だから､ これはいいことなんです｡
‫さて､ この最初のエポックの終わりには､ 正しく設定されていれば､ トレーニングセットでの損失とトレーニングセットでの精度が表示されるはずです｡
‫今にも､ 検証データの損失と検証セットの精度が表示されるはずです｡
‫だから､ 待っているだけなんです｡
‫おそらく今やっているのは､ 12秒より少し長い時間ですが､ 検証データをメモリにロードして､
‫そのデータセットに対するパフォーマンスを計算・評価できるようにしています｡
‫こんなことができるなんて､ 信じられない｡
‫リアルタイムで一緒にモデルをトレーニングしているようなものです｡
‫これは驚異的なことです｡
‫こんなこと初めてです｡
‫それは､ あなたのコードが動作している限りにおいてです｡
‫さあ､ どうぞ｡
‫あれを見てください｡
‫それで今､ こうなっているわけです｡
‫今お話したのは､ この指標はトレーニングデータで､ この指標はバリデーションデータで､ ということです｡
‫だから､ 私たちの精度がどれだけ早く向上しているかを見てください｡
‫さて､ エポック社はスピードアップしていると申し上げました｡
‫あれを見てください｡
‫最初のものは5分くらいかかりましたが､ これは5秒で終わっています｡
‫すでに1になっています｡ 0精度です｡
‫トレーニングデータでの精度は100％ですね｡
‫正気の沙汰とは思えませんね｡
‫つまり､ このモデルがオーバーフィットしているのは良いことで､ トレーニングデータでは検証データよりもはるかに良いパフォーマンスを示しているということです｡
‫でも､ これはすごいことなんです｡
‫我々のモデルは機能しており､ パターンを見つけ出しています｡
‫モバイルネットVertuがイメージネットで学んだことを､ 私たちの犬のデータセットに適用しているのです｡
‫ドッグビジョンが実現する
‫すごく興奮しています｡
‫私たちはリアルタイムで一緒にモデルをトレーニングしているので､ 皆さんのモデルもこのように動作していることを期待しています｡
‫これは美しい｡
‫つまり､ 検証の結果､ 何回ものエポックにおいて精度の向上が止まっていることがわかるはずです｡
‫だから3､ 早々に停止したコールバックのせいで､ トレーニングが止まってしまうんだ｡
‫100エポックに届くとは思えませんし､ それ以下かもしれません｡
‫0の精度で､ 学習データに対してわずかな損失しか発生させませんでした｡
‫それでは､ どうぞ｡
‫止まってしまった｡
‫のために｡
‫心臓がバクバクしています｡
‫驚異的でしたね｡
‫だから､ 私の言いたいことを見てください｡
‫最初のエポックは､ データをメモリにロードするため､ 時間がかかります｡
‫読み込んだら
‫メモリにあるその初期データは､ GPUがそのまま行ってしまうんです｡
‫わかりました｡
‫そろそろアクセルを踏んで､ アフターバーナーをつけよう｡
‫オールガス｡
‫ブレーキなしだよ､ ベイビー
‫100エポック中18エポックに到達し､ 学習データセットに対するモデルの精度が100%であることが確認できました｡
‫それはかなりクレイジーですね｡
‫1. 0.
‫この数字を100倍したものが2つあるんですね｡
‫損失はかなり少ないです｡
‫つまり､ 損失がゼロというのは完璧なんです｡
‫しかし､ このモデルは検証データよりも学習データの方がはるかに性能が良いので､ オーバーフィットしていることが分かります｡
‫だから､ もし戻ってきたら､ 私たちのモデルは､ その教材の問題解決原理ではなく､ 教材を記憶してしまっているようなものです｡
‫そして､ これまで見たこともないようなデータセットに適応するために､ 苦労しています｡ k. 模擬試験や当社の検証セットをご利用ください｡
‫ですから､ 今のところ､ 私たちのモデルは一般化する能力が低いのです｡
‫誰？
‫ということで､ 1本の動画はこれで十分だと思います｡
‫そりゃあ､ 盛り上がりますよ｡
‫少し宿題をしてほしいのは､ 次のビデオでテネシー掲示板のログを確認する前に､ 以前にも検閲掲示板のコールバックを使ったことがあるからです｡
‫この一問一答を確認してほしい｡
‫これは､ モデリングをしてみて､ 本当に大事なものなのか？
‫行ってほしい｡
‫質問です｡
‫パフォーマンスを発揮しているので､ 我々のモデルがオーバーフィットしているように見えます｡
‫検証データセットよりもトレーニングデータセットの方がはるかに優れている｡
‫深層学習ニューラルネットワークにおけるモデルのオーバーフィッティングを防ぐ方法には､ どのようなものがありますか？
‫そこで､ それをマークダウンにする｡
‫それは､ 次のビデオに入る前に調べてほしい質問です｡
‫ディープニューラルネットワークにおいて､ モデルのオーバーフィットを防ぐ方法にはどのようなものがあるのでしょうか？
‫だから､ それを確認する｡
‫たとえ確信が持てない場合でも､ 何が起こっているのかに興味を持ち始め､ モデルがオーバーフィットしている時､
‫例えば､ 検証データセットよりもトレーニングデータセットの方がはるかに良いパフォーマンスを示すといった手がかりを掴み始めて欲しいのです｡
‫そして､ ここで少し注意なのですが､ そもそもオーバーフィッティングに注意することです｡
‫それは､ 我々のモデルが学習しているということです｡
‫ですから､ 私たちは伝達学習を使って､ 最初の深層学習ニューラルネットワークを一緒に訓練したところで､
‫驚異的な興奮を覚えています｡
‫ドッグビジョンが実現する
‫それで､ 少なくともモデルの最初のサブセットをトレーニングし終えました｡
‫これはフルデータではなく､ 1000枚の画像に限った話です｡
‫そこで､ 私たちの次のステップは､ もし私たちが基調講演に来たら､ 何を企んでいるのか？
‫そこで､ モデルをデータに当てはめる｡
‫まだ予測はしていません｡
‫そこで､ テンソルボードのコールバックを使ってモデルを評価し､ それを見てから､ 学習したモデルを使って予測を行う方法を考えましょう｡
‫計画的だと思う？
‫では､ この質問をチェックして､ 次のビデオでお会いしましょう｡