2022/04/15
7607 ワード
1)学習内容
人工ニューラルネットワーク:人工ニューラルネットワーク
上記の機械学習の1つの分野の深さ学習は人工ニューラルネットワークに基づいている.人工ニューラルネットワークと呼ばれるANNは,人間のニューラルネットワークの原理と構造を模倣した機械学習アルゴリズムである.人間の脳では,ニューロンが何らかの信号,刺激を受け,その刺激がある臨界値を超えると,結果信号を伝達する過程から着手する.
ANNは入力値を用いて人工ニューロンの出力値を算出し,人工ニューロンが算出した出力値をユーザの所望の出力値と比較した.このとき、ウェイト値を調整して所望の出力値を生成することができる.しかしANNはこれらの学習過程で最適なパラメータを見つけることが困難であり,学習時間が遅すぎるなどの問題がある.
≪深新ネットワーク|Depth New Network|emdw≫:深新ネットワーク
ANN技術の様々な問題が解決されるにつれて,DNN(Deep Neural Network)と呼ばれるモデル内の隠蔽層を増やすことによって学習結果を向上させる方法が出現した.DNとは,2つ以上の非表示層を持つ学習方法である.コンピュータ自身で分類ラベルを作成し,空間の改ざんとデータの分割を繰り返すことで,最適な分割線を導く.大量のデータと反復学習を必要とし,事前学習と誤り逆転技術により現在広く用いられている.そしてDNNを適用するアルゴリズムはCNN,RNNである.(その他、LSTM、GRUなどがあります.)
CNN(合成二重ニューラルネットワーク:Convolution Neural Network)
従来はデータから知識を抽出して学習する方式であったが,CNNはデータの特徴を抽出することによって特徴パターンを把握する構造である.CNNは,人間の視神経構造を模倣し,データを特徴として抽出することでこれらの特徴のパターンを把握する構造である.特徴抽出はConvolutionプロセスとPoyoungプロセスによって行われる.CNNはConvolution LayerとPoyoung Layerを複合してアルゴリズムを構成する.
これは、画像を識別するためにモードを探すのに役立ちます.データから直接学習し、モードを使用してこれらのデータを分類し、手動で抽出する必要はありません.これらの利点から,自動車の自動運転,顔認識などの対象認識やコンピュータ視覚が必要な分野で多く用いられている.
Convolution:データを抽出する過程で、データ中の各成分の隣接成分を分析し、その特徴を確定する.ここで導出した特徴を特定の層として抽象化し,Convolution Layerに圧縮する.
Poyoung:進化過程を経た層のサイズを縮小する過程です.データサイズを小さくすることでノイズを除去し、統一的な特性を提供する.通常は、Convolution中に作成されたfeatureの最大値のみを取得してサイズを縮小します.これをmax poolingと呼びます.from keras import layers
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32, (3,3), activation='relu',input_shape=(28,28,1)))
model.add(layers.MaxPool2D((2,2)))
model.add(layers.Conv2D(64, (3,3), activation='relu'))
model.add(layers.MaxPool2D((2,2)))
model.add(layers.Conv2D(64, (3,3), activation='relu'))
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 26, 26, 32) 320
max_pooling2d (MaxPooling2D (None, 13, 13, 32) 0
)
conv2d_1 (Conv2D) (None, 11, 11, 64) 18496
max_pooling2d_1 (MaxPooling (None, 5, 5, 64) 0
2D)
conv2d_2 (Conv2D) (None, 3, 3, 64) 36928
=================================================================
Total params: 55,744
Trainable params: 55,744
Non-trainable params: 0
_________________________________________________________________
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 26, 26, 32) 320
max_pooling2d (MaxPooling2D (None, 13, 13, 32) 0
)
conv2d_1 (Conv2D) (None, 11, 11, 64) 18496
max_pooling2d_1 (MaxPooling (None, 5, 5, 64) 0
2D)
conv2d_2 (Conv2D) (None, 3, 3, 64) 36928
flatten (Flatten) (None, 576) 0
dense (Dense) (None, 64) 36928
dense_1 (Dense) (None, 10) 650
=================================================================
Total params: 93,322
Trainable params: 93,322
Non-trainable params: 0
_________________________________________________________________
from keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
(train_images, train_labels),(test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000,28,28,1))
train_images = train_images.astype('float32') /255
test_images = test_images.reshape(10000,28,28,1)
test_images = test_images.astype('float32') / 255
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=5, batch_size=64)
test_loss, test_acc = model.evaluate(test_images, test_labels)
test_acc
再帰ニューラルネットワーク(RNN)
RNNは入出力単位で処理されるシーケンスモデルであり,以前のニューラルネットワークは暗黙層で関数を活性化し,活性化関数を超えた値はすべて出力層の方向にのみ向かう.
しかしRNNは,暗黙層のノードからアクティブ化関数により得られた結果値を出力層方向に送信し,その結果を暗黙層ノードの次の計算への入力とすることを特徴とする.このループ構造を利用して,過去の学習をW(weight)により現在の学習に反映する.このアルゴリズムは,従来の連続,繰返し,連続データ学習の限界を解決し,現在の学習を過去の学習と結びつける.
出典:機械学習深さ学習アルゴリズムを紹介する。
映画評論の分類
IMDBデータセット
50000のネット映画データベースからの2つの極端なコメント
トレーニングデータ25000個、テストデータ25000個
MNISTのように、基本的にはkerasに含まれています.
データは前処理され、含まれる単語はすべて数字に変換されます.
映画評論分類:バイナリ分類例
データの準備
数値リストをニューラルネットワークに直接注入できません.
ホットコーディングを使用して10000次元ベクトルに変換
ソフトMax関数
ソフトMax関数はLogistic関数の多次元一般化である.多航路gistic回帰によく用いられ,人工ニューラルネットワークにおける確率分布の最後の活性関数として得られる.名前とは異なり、最値(max)関数を平滑化または平滑化するのではなく、最値の因数一熱形式のarg max関数を平滑化する.その計算方法は、入力値を自然ログの下部にある指数関数から取り出し、指数関数の和で除算します.
conv2d
2)学習内容の難点
符号化するとき、たまに私が書いたコードが働かないこともあります.講師が書いたコードと同じように、このような問題が発生すると気まずいときがあり、このような状況は間違いを犯すと発生します.問題は、誤字が出た場合、誤字を探すために時間が経つことです.
3)解決方法
エンコード中に何か詰まりやエラーが発生した場合は、講師が作成したコードをコピーして貼り付けます.あるいは、別のバックアップを作成し、事前に準備する必要があります.
4)勉強の心得
この授業も符号化によって行われた.ビデオを見て復習して、今月末の評価を準備します.
Reference
この問題について(2022/04/15), 我々は、より多くの情報をここで見つけました
https://velog.io/@zakumann/20220415
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
from keras import layers
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32, (3,3), activation='relu',input_shape=(28,28,1)))
model.add(layers.MaxPool2D((2,2)))
model.add(layers.Conv2D(64, (3,3), activation='relu'))
model.add(layers.MaxPool2D((2,2)))
model.add(layers.Conv2D(64, (3,3), activation='relu'))
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 26, 26, 32) 320
max_pooling2d (MaxPooling2D (None, 13, 13, 32) 0
)
conv2d_1 (Conv2D) (None, 11, 11, 64) 18496
max_pooling2d_1 (MaxPooling (None, 5, 5, 64) 0
2D)
conv2d_2 (Conv2D) (None, 3, 3, 64) 36928
=================================================================
Total params: 55,744
Trainable params: 55,744
Non-trainable params: 0
_________________________________________________________________
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 26, 26, 32) 320
max_pooling2d (MaxPooling2D (None, 13, 13, 32) 0
)
conv2d_1 (Conv2D) (None, 11, 11, 64) 18496
max_pooling2d_1 (MaxPooling (None, 5, 5, 64) 0
2D)
conv2d_2 (Conv2D) (None, 3, 3, 64) 36928
flatten (Flatten) (None, 576) 0
dense (Dense) (None, 64) 36928
dense_1 (Dense) (None, 10) 650
=================================================================
Total params: 93,322
Trainable params: 93,322
Non-trainable params: 0
_________________________________________________________________
from keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
(train_images, train_labels),(test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000,28,28,1))
train_images = train_images.astype('float32') /255
test_images = test_images.reshape(10000,28,28,1)
test_images = test_images.astype('float32') / 255
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=5, batch_size=64)
test_loss, test_acc = model.evaluate(test_images, test_labels)
test_acc
符号化するとき、たまに私が書いたコードが働かないこともあります.講師が書いたコードと同じように、このような問題が発生すると気まずいときがあり、このような状況は間違いを犯すと発生します.問題は、誤字が出た場合、誤字を探すために時間が経つことです.
3)解決方法
エンコード中に何か詰まりやエラーが発生した場合は、講師が作成したコードをコピーして貼り付けます.あるいは、別のバックアップを作成し、事前に準備する必要があります.
4)勉強の心得
この授業も符号化によって行われた.ビデオを見て復習して、今月末の評価を準備します.
Reference
この問題について(2022/04/15), 我々は、より多くの情報をここで見つけました
https://velog.io/@zakumann/20220415
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
この授業も符号化によって行われた.ビデオを見て復習して、今月末の評価を準備します.
Reference
この問題について(2022/04/15), 我々は、より多くの情報をここで見つけました https://velog.io/@zakumann/20220415テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol