Drop out of là gì

1. Dropout là gì, nó có chân thành và ý nghĩa gì vào mạng neural network

Theo Wikipedia, thuật ngữ “dropout” đề cập tới vấn đề bỏ qua mất các đơn vị (unit) (cả hai hidden unit với visible unit) vào mạng neural network.

Bạn đang xem: Drop out of là gì

Hiểu dễ dàng là, trong mạng neural network, chuyên môn dropout là vấn đề chúng ta vẫn vứt sang 1 vài unit trong veo quá trình train trong quy mô, mọi unit bị làm lơ được chọn lựa tự dưng. Ở phía trên, chúng ta hiểu “bỏ lỡ - ignoring” là unit đó sẽ không tđê mê gia với góp sức vào quá trình đào tạo (lan truyền tiến và lan truyền ngược).

Về mặt chuyên môn, tại từng tiến độ giảng dạy, từng node tất cả Tỷ Lệ bị bỏ qua mất là 1-p với Phần Trăm được chọn là p

2. Tạo sao họ đề nghị dropout

Giả sử rằng chúng ta hiểu trọn vẹn đa số gì đang nói ở trong phần 1, câu hỏi đưa ra là tại vì sao họ phải mang đến dropout, tại vì sao họ rất cần được sa thải một vài ba các unit nào đó vào mạng neural network?

Câu vấn đáp mang đến thắc mắc này là để kháng over-fitting

Lúc bọn họ thực hiện full connected layer, những neural đã nhờ vào “mạnh” cho nhau nhìn trong suốt quá trình đào tạo và huấn luyện, vấn đề đó có tác dụng bớt sức mạng cho mỗi neural cùng dẫn cho bị over-fitting tập train.

3. Dropout

Đọc đến trên đây, bạn đã có một quan niệm cơ bạn dạng về dropout cùng đụng lực - hộp động cơ nhằm chúng ta sử dụng nó. Nếu các bạn chỉ ao ước bao gồm cái nhìn tổng quan lại về dropout vào neural network, hai sections bên trên vẫn cung cấp không hề thiếu đọc tin cho bạn, chúng ta cũng có thể giới hạn trên trên đây. Phần tiếp sau, chúng ta vẫn nói kỹ rộng về phương diện chuyên môn của dropout.

Trước đây, trong machine learning, tín đồ ta thường thực hiện regularization để nbít tất tay ngăn over-fititng. Regularization làm cho giảm over-fitting bằng phương pháp thêm yếu tố “phạt” vào hàm độ lỗi (loss function). Bằng câu hỏi cung cấp điểm pphân tử này, mô hình được giảng dạy để giúp những features weights sụt giảm sự phụ thuộc lẫn nhau. Đối cùng với số đông ai đó đã thực hiện Logistic Regression rồi thì vẫn không xa lạ với thuật ngữ phạt L1(Laplacian) và L2 (Gaussian).

Dropout là 1 trong kỹ thuật khác, một phương pháp tiếp cận không giống nhằm regularization vào mạng neural netwoks.

Kỹ thuật dropout được thực hiện nhỏng sau:

Trong trộn train: cùng với mỗi hidden layer, cùng với từng trainning sample, với mỗi lần lặp, lựa chọn bất chợt p Xác Suất số node và bỏ qua mất nó (bỏ lỡ luôn hàm kích hoạt cho các node bị quăng quật qua).

Trong pha test: Sử dụng tổng thể activations, nhưng mà sút chúng cùng với Tỷ Lệ p (bởi chúng ta bị miss p% hàm activation trong quá trình train).

*
Mô tả về kiến trúc mạng có và không tồn tại dropout

4. Một số Điểm lưu ý đúc kết được khi huấn luyện nhiều quy mô khác biệt áp dụng dropout

Dropout nghiền mạng neural phải tìm thấy những robust features hơn, cùng với Đặc điểm là chúng yêu cầu hữu dụng rộng, tốt rộng, ngon hơn Khi kết hợp với các neuron khác.

Xem thêm: Smb:Cve-2017-0144 Là Gì - Mấy Hôm Nay Laptop Của E Nó Cứ Báo Như Này

Dropout yên cầu cần gấp rất nhiều lần quá trình đào tạo và giảng dạy để đã có được sự quy tụ. Tuy nhiên, thời gian huấn luyện cho từng epoch đang thấp hơn.

Với H unit trong quy mô, từng unit đều có xác xuất bị bỏ qua mất hoặc được lựa chọn, chúng ta sẽ sở hữu 2^H mô hình hoàn toàn có thể có. Trong trộn test, cục bộ network được áp dụng với mỗi hàm activation được giảm xuống với thông số p.

5. Thực nghiệm trong keras

Những vụ việc nhắc đến ở trên chỉ với kim chỉ nan. Bây tiếng chúng ta sẽ hợp tác vào có tác dụng thực tế. Để coi thử dropout vận động như thế nào, chúng ta sẽ xây dựng quy mô deep net thực hiện keras và áp dụng tập tài liệu cifar-10. Mô hình chúng ta thành lập có 3 hidden layer với size thứu tự là 64, 128, 256 cùng 1 full connected layer tất cả size 512 với output layer có size 10 (bởi vì mình có 10 lớp).

Chúng ta áp dụng hàm kích hoạt là ReLU trên các hidden layer và thực hiện hàm sigmoid trên output layer. Sử dụng hàm lỗi categorical cross-entropy.

Trong ngôi trường hòa hợp mô hình bao gồm thực hiện dropout, bọn họ vẫn mix dropout nghỉ ngơi tất cả những layer với thay đổi xác suất dropout nằm trong vòng tự 0.0 mang lại 0.9 với bước dancing là 0.1.

Mô hình thiết lập cùng với số epochs là đôi mươi. Bắt đầu coi làm sao.

Thứ nhất, chúng ta vẫn load một vài ba thỏng viện buộc phải thiết

import numpy as npimport osimport kerasfrom keras.datasets import cifar10from keras.models import Sequentialfrom keras.layers import Dense, Dropout, Activation, Flattenfrom keras.layers import Convolution2D, MaxPooling2Dfrom keras.optimizers import SGDfrom keras.utils import np_utilsfrom keras.preprocessing.image import ImageDataGeneratorimport matplotlib.pyplot as pltfrom pylab import rcParamsrcParams<"figure.figsize"> = trăng tròn, 20from keras.datasets import cifar10(X_train, y_train), (X_chạy thử, y_test) = cifar10.load_data()print("Training data:")print("Number of examples: ", X_train.shape<0>)print("Number of channels:",X_train.shape<3>) print("Image size:",X_train.shape<1>, X_train.shape<2>, X_train.shape<3>)print("Test data:")print("Number of examples:", X_demo.shape<0>)print("Number of channels:", X_kiểm tra.shape<3>)print("Image size:",X_demo.shape<1>, X_test.shape<2>, X_kiểm tra.shape<3>)Kết quả

Training data:Number of examples: 50000Number of channels: 3Image size: 32 32 3Test data:Number of examples: 10000Number of channels: 3Image size: 32 32 3Chúng ta có 50000 hình train, với 10000 hình demo. Mỗi hình là một hình họa RGB gồm kích thước 33x32x3 pixel.

*
datamix cifar 10

Tiếp theo, chúng ta vẫn chuẩn chỉnh hoá tài liệu. Đây là 1 bước quan trọng trước khi huấn luyện và đào tạo mô hình

# In<3>:Specify Training ParametersbatchSize = 512 #-- Training Batch Sizenum_classes = 10 #-- Number of classes in CIFAR-10 datasetnum_epochs = 100 #-- Number of epochs for training learningRate= 0.001 #-- Learning rate for the networklr_weight_decay = 0.95 #-- Learning weight decay. Reduce the learn rate by 0.95 after epochimg_rows, img_cols = 32, 32 #-- input đầu vào image dimensionsY_train = np_utils.to_categorical(y_train, num_classes)Y_kiểm tra = np_utils.to_categorical(y_kiểm tra, num_classes)batchSize = 512 #-- Training Batch Sizenum_classes = 10 #-- Number of classes in CIFAR-10 datasetnum_epochs = 100 #-- Number of epochs for training learningRate= 0.001 #-- Learning rate for the networklr_weight_decay = 0.95 #-- Learning weight decay. Reduce the learn rate by 0.95 after epochimg_rows, img_cols = 32, 32 #-- đầu vào image dimensionsY_train = np_utils.to_categorical(y_train, num_classes)Y_demo = np_utils.to_categorical(y_demo, num_classes)# In<4>:VGGnet-10from keras.layers import Conv2Dimport copyresult = y = loss = <>acc = <>dropouts = <0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9>for dropout in dropouts: print("Dropout: ", (dropout)) Mã Sản Phẩm = Sequential() #-- layer 1 Mã Sản Phẩm.add(Conv2D(64, (3, 3), border_mode="valid", input_shape=( img_rows, img_cols,3))) model.add(Dropout(dropout)) model.add(Conv2D(64, (3, 3))) model.add(Dropout(dropout)) Mã Sản Phẩm.add(Activation("relu")) mã sản phẩm.add(MaxPooling2D(pool_size=(2, 2))) ##--layer 2 Mã Sản Phẩm.add(Conv2D(128, (3, 3))) mã sản phẩm.add(Dropout(dropout)) Mã Sản Phẩm.add(Activation("relu")) Mã Sản Phẩm.add(MaxPooling2D(pool_size=(2, 2))) ##--layer 3 Model.add(Conv2D(256, (3, 3))) mã sản phẩm.add(Dropout(dropout)) mã sản phẩm.add(Activation("relu")) mã sản phẩm.add(MaxPooling2D(pool_size=(2, 2))) ##-- layer 4 mã sản phẩm.add(Flatten()) Model.add(Dense(512)) Model.add(Activation("relu")) #-- layer 5 Model.add(Dense(num_classes)) #-- loss Mã Sản Phẩm.add(Activation("softmax")) sgd = SGD(lr=learningRate, decay = lr_weight_decay) model.compile(loss="categorical_crossentropy", optimizer="sgd", metrics=<"accuracy">) model_cce = model.fit(X_train, Y_train, batch_size=batchSize, epochs=20, verbose=1, shuffle=True, validation_data=(X_test, Y_test)) score = Mã Sản Phẩm.evaluate(X_chạy thử, Y_chạy thử, verbose=0) y = Mã Sản Phẩm.predict(X_test) print("Test score:", score<0>) print("Test accuracy:", score<1>) result = copy.deepcopy(model_cce.history) loss.append(score<0>) acc.append(score<1>)# In<5>: plot dropout import numpy as np import matplotlib.pyplot as pltwidth = 0.1plt.bar(dropouts, acc, width, align="center")plt.tick_params(axis="both", which="major", labelsize=35)plt.tick_params(axis="both", which="minor", labelsize=35)plt.ylabel("Accuracy",kích thước = 30)plt.xlabel("Dropout", form size = 30)plt.show()# In<6>: plot non drop outimport numpy as np import matplotlib.pyplot as pltwidth = 0.1plt.bar(dropouts, loss, width, align="center",color = "green")plt.tick_params(axis="both", which="major", labelsize=35)plt.tick_params(axis="both", which="minor", labelsize=35)plt.ylabel("Loss",form size = 30)plt.xlabel("Dropout", form size = 30)plt.show()

*
Kết quả

Nhìn hình tác dụng sống bên trên, bọn họ gồm một số kết luận nhỏ dại nlỗi sau:

Giá trị dropout tốt nhất là 0.2, khoảng tầm dropout đến giá trị gật đầu đồng ý được là bên trong đoạn từ bỏ 0 mang đến 0.5. Nếu dropout lớn hơn 0.5 thì tác dụng hàm đào tạo và huấn luyện trả về khá tệ.

Xem thêm: 9 Kiến Thức Liên Quan Cách Dùng As Well As Là Gì ? Định Nghĩa & Cách Sử Dụng

Giá trị độ đúng chuẩn còn khá thấp => trăng tròn epochs là không đủ, đề xuất giảng dạy nhiều hơn thế nữa nữa.


Chuyên mục: Kiến Thức