本「写真のディープラーニング。人工知能ビジュアルガイド

画像こんにちは、habrozhiteli!ディープラーニングは、人工知能を操作するための強力なエンジンになっています。鮮やかなイラストと簡単なコード例により、ディープラーニングモデルの構築の複雑さを掘り下げて複雑なタスクをアクセス可能で楽しいものにする手間を省きます。



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%割引クーポン- ディープラーニング



紙の本の支払い後、電子書籍が電子メールで送信されます。



All Articles