John Krohn、Grant Beyleveld、偉大なイラストレーターであるAglae Bassensは、鮮明な例とアナロジーを使用して、ディープラーニングとは何か、ディープラーニングが非常に人気がある理由、それが機械学習の他のアプローチとどのように関連しているかを説明します。この本は、ディープラーニングを仕事に適用したい開発者、データサイエンティスト、研究者、アナリスト、意欲的なプログラマーに最適です。理論計算は、JupyterノートブックのPythonアプリケーションコードによって完全に補完されます。TensorFlowとKerasで効率的なモデルを作成する方法を学び、PyTorchにも慣れます。
ディープラーニングの基本的な知識があれば、コンピュータービジョンや自然言語処理から画像生成やゲームアルゴリズムまで、実際のアプリケーションを作成できます。
Kerasベースの中間深度ネットワーク
この章の最後では、新しい理論的知識をニューラルネットワークに変換し、手書きの数値の分類で以前のshallow_net_in_keras.ipynbモデルを超えることができるかどうかを確認します。
Jupyterのmiddle_net_in_keras.ipynbノートブックの最初のいくつかのステップは、その前身である浅いWebのステップと同じです。最初に、同じKeras依存関係がロードされ、MNISTデータセットが入力され、同じ方法で処理されます。リスト8.1を見るとわかるように、楽しみはニューラルネットワークアーキテクチャが定義されているところから始まります。
リスト8.1 中深度のニューラルネットワークアーキテクチャを定義するコード
model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(784,)))
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='softmax'))
このコードスニペットの最初の行であるmodel = Sequential()は、前のネットワークと同じです(リスト5.6)。これはニューラルネットワークモデルオブジェクトのインスタンスです。次の行で不一致が始まります。その中で、第6章で推奨されているように、最初の非表示層のシグモイド活性化関数をrelu関数に置き換えました。活性化関数を除く最初の層の他のすべてのパラメーターは同じままでした。 784個のニューロン。
リスト5.6の浅いアーキテクチャーからのリスト8.1のもう1つの重要な変更は、人工ニューロンの2番目の隠れ層の存在です。model.add()を呼び出すことにより、64個のreluニューロンを持つ2番目の高密度レイヤーを簡単に追加し、ノートブック名の中間という単語を正当化します。model.summary()を呼び出すと、図4に示すように表示されます。8.9では、浅いアーキテクチャと比較して、この追加のレイヤーにより4,160の追加のトレーニングパラメーターが追加されます(図7.5を参照)。パラメータは次のように分類できます。
- 2番目の隠れ層の64ニューロンのそれぞれと最初の隠れ層の64ニューロンのそれぞれの結合に対応する4096の重み(64×64 = 4096)。
- さらに64のオフセット、2番目の非表示層の各ニューロンに1つ。
- 結果は4160パラメータです:nパラメータ= nw + nb = 4096 + 64 =
= 4160。
リスト8.2に示すように、モデルアーキテクチャの変更に加えて、モデルのコンパイルオプションも変更しました。
リスト8.2 中間深度ニューラルネットワークコンパイルコード
model.compile(loss='categorical_crossentropy',
optimizer=SGD(lr=0.1),
metrics=['accuracy'])
これらの行はリスト8.2からのものです。
- クロスエントロピーに基づいてコスト関数を設定します。loss= 'categorical_crossentropy'(浅いネットワークでは、2次値ロス= 'mean_squared_error'が使用されました);
- 確率的勾配降下法を定義して、コストを最小限に抑えます。optimizer= SGD;
- 学習率ハイパーパラメーターを定義します。lr = 0.1 (1) ;
- , , Keras , : metrics=['accuracy'](2).
(1) , , .
(2) , , , , , . , , , . , , : , (, « 86 »), (« 86 , »).
最後に、リスト8.3のコードを実行して中間ネットワークをトレーニングします。
リスト8.3 中間深度ニューラルネットワークトレーニングコード
model.fit(X_train, y_train,
batch_size=128, epochs=20,
verbose=1,
validation_data=(X_valid, y_valid))
浅いネットワーク(リスト5.7を参照)と比較して中間ネットワークトレーニングで変更された唯一の点は、エポックハイパーパラメーターの次数が200から20に減少したことです。後で説明するように、より効率的な中間アーキテクチャでは、学習に必要なエポックがはるかに少なくなります。
図では 8.10は、ネットワークトレーニングの最初の4つのエポックの結果を示しています。覚えているかもしれませんが、私たちの浅いアーキテクチャは、200エポック後に検証データで86%の精度のプラトーに達しました。中間の深さのネットワークはそれを大幅に超えました。val_accフィールドが示すように、ネットワークは最初のトレーニングエポック後に92.34%の精度に達しました。3回目のエポック後、精度は95%を超え、20回目のエポックまでに約97.6%のプラトーに達したようです。私たちは真剣に前進しています!
図4に示すmodel.fit()の出力をさらに詳しく見てみましょう。8.10:
- 以下に示すプロセスインジケータは、469の「トレーニングサイクル」中に入力されます(図8.5を参照):
60000/60000 [======================== ======] - 1s 15us/step , 469 1 , 15 .
- loss . 0.4744 (SGD) , 0.0332 .
- acc — . 86.37% 99% . , .
- , (val_loss), , 0.08 .
- (val_acc). , 97.6%, 86% .
この章では、素晴らしい仕事をしました。最初に、固定パラメーターを持つニューラルネットワークが情報を処理する方法を学びました。次に、相互作用する方法-コスト関数、確率的勾配降下法、および逆伝播を整理しました。これらを使用すると、ネットワークパラメーターを調整して、入力xと連続関係を持つyの真の値を近似できます。その過程で、学習速度、パッケージサイズ、トレーニング時代の数などのいくつかのハイパーパラメータと、それぞれを設定するための実用的なルールについて理解しました。この章の終わりに、新しい知識を適用して中間深度ニューラルネットワークを作成しました。これは、手書きの数字を分類する同じ問題について、以前の浅いネットワークを大幅に上回っています。次に、人工ニューラルネットワークが深化するにつれてその安定性を向上させ、本格的なディープラーニングモデルを開発およびトレーニングできるようにする方法を見ていきます。
»本の詳細については、出版社のWebサイトを参照してください。
» 目次
» 抜粋
ハブロジテリーの25%割引クーポン- ディープラーニング
紙の本の支払い後、電子書籍が電子メールで送信されます。