CHƢƠNG 2 CƠ SỞ LÝ THUYẾT
2.6. Tìm hiểu về keras
2.6.2 Cấu trúc của Keras
Cấu trúc của keras chúng ta có thể chia ra thành 3 phần chính :
Hình 2. 15. Cấu trúc của keras. Đầu tiên là các moudule dùng để xây dựng bộ xƣơng cho model: Đầu tiên là các moudule dùng để xây dựng bộ xƣơng cho model:
Hình 2. 16. Cấu trúc xây dựng bộ xƣơng cho model keras.
2.6.2.1 Đầu tiên ta tìm hiểu sub-module : Models trong keras.
Để khởi tạo một model trong keras ta có thể dùng 2 cách:
Thơng qua Sequential nhƣ ví dụ dƣới. Chúng ta khởi tạo model bằng Sequential sau đó dùng method add để thêm các layer.
38 Khi chúng ta khởi tạo một model thì có các method ta cần lƣu ý là :
o compile : Sau khi build model xong thì compile nó có tác dụng biên tập lại tồn bộ model của chúng ta đã build. Ở đây chúng ta có thể chọn các tham số để training model nhƣ : thuật tốn training thơng qua tham số optimizer, function loss của model chúng ta có thể sử dụng mặc định hoặc tự build thông qua tham số loss, chọn metrics hiện thị khi model đƣợc training o summary method này giúp chúng ta tổng hợp lại model xem model có bao
nhiêu layer, tổng số tham số bao nhiêu,shape của mỗi layer..
o fit dùng để đƣa data vào training để tìm tham số model(tƣơng tự nhƣ sklearn)
o predict dùng để predict các new instance o evaluate để tính tốn độ chính xác của model
o history dùng để xem accuracy,loss qua từng epochs . Thƣờng dùng với matplotlib để vẽ chart.
2.6.2.2 Tiếp theo chúng ta tìm hiểu đến sub-module Layers
Nó chứa các layers chuyên dụng để ta build các model nhƣ CNN,RNN,GANs..Có rất nhiều layers nên ta chỉ quan tâm đến một số layer thƣờng sử dụng.
39 Hình 2. 17. Các layer thƣờng sử dụng build các model.
Core layer : chứa các layer mà hầu nhƣ model nào cũng sử dụng đến nó.
o Dense layer này sử dụng nhƣ một layer neural network bình thƣờng. Các tham số quan tâm.
units chiều output
activation dùng để chọn activation.
input_dim chiều input nếu là layer đầu tiên use_bias có sử dụng bias ko,true or false
kernel_initializer khởi tạo giá trị đầu cho tham số trong layer trừ bias bias_initializer khởi tạo giá trị đầu cho bias
kernel_regularizer regularizer cho coeff bias_regularizer regularizer cho bias
activity_regularizer có sử dụng regularizer cho output ko kernel_constraint,bias_constraint có ràng buộc về weight ko
o Activation dùng để chọn activation trong layer(có thể dùng tham số activation thay thế).
o Dropout layer này dùng nhƣ regularization cho các layer hạn chế overfiting. Tham số cần chú ý :
rate tỉ lệ dropout
noise_shape cái này chƣa tìm hiểu seed random seed bình thƣờng
40 o Flatten dùng để làm phằng layer để fully connection, vd : shape : 20x20 qua
layer này sẽ là 400x1
o Input layer này sử dụng input nhƣ 1 layer nhƣ vd trƣớc ta đã nói. o Reshape giống nhƣ tên gọi của nó, dùng để reshape
o Lambda dùng nhƣ lambda trong python thôi ha
Convolutional Layers: chứa các layer trong mạng nơ-ron tích chập
o Conv1D,Conv2D là convolution layer dùng để lấy feature từ image. tham số cần chú ý:
filters số filter của convolution layer kernel_size size window search trên image strides bƣớc nhảy mỗi window search padding same là dùng padding,valid là ko data_format format channel ở đầu hay cuối
o UpSampling1D,UpSampling2D Ngƣợc lại với convolution layer size vd (2,2) có nghĩa mỗi pixel ban đầu sẽ thành 4 pixel o ZeroPadding1D,ZeroPadding2D dùng để padding trên image.
padding số pixel padding
Pooling Layers : Chứa các layer dùng trong mạng CNN.
o MaxPooling1D,MaxPooling2D dùng để lấy feature nổi bật(dùng max) và giúp giảm parameter khi training
pool_size size pooling
o AveragePooling1D,AveragePooling2D giống nhƣ maxpooling nhƣng dùng Average
o GlobalMaxPooling1D,GlobalMaxPooling2D chƣa dùng bao giờ nên chƣa hiểu nó làm gì
Recurrent Layers chứa các layers dùng trong mạng RNN o RNN layer RNN cơ bản
41 o LSTM Long Short-Term Memory layer
Embedding layer : Embedding dùng trong nhiều trong nlp mục đích embbding sang một khơng gian mới có chiều nhỏ hơn, và dc learning from data thay cho one-hot lad hard code.
o input_dim size của vocabulary o output_dim size của word embbding o input_length chiều dài mỗi sequence
Merge Layers : chứa các layers giúp chúng ta cộng,trừ,hoặc nối các layer nhƣ các vector vậy
o Add cộng các layers o Subtracttrừ các layers o Multiplynhân các layer
o Average tính trung bình các layers o Maximum lấy maximun giữa các layers o Concatenate nối các layer
o Dot Nhân matrix giữ 2 layers
Own Keras layers : Giúp chúng ta có thể xây dựng layer nhƣ theo ý muốn, gồm 3 method chúng ta cần chú ý là build,call và compute_output_shape
42
2.6.2.3 Tiếp theo chúng ta tìm hiểu đến tiền xử lí dữ liệu trong Keras
Tiền xử lí dữ liệu trong Keras đƣợc chia ra làm 3 phần:
Sequence Preprocessing tiền xử lý chuỗi .
o TimeseriesGenerator cái này dùng để tạo dữ liệu cho time series o pad_sequences dùng để padding giúp các chuỗi có độ dài bằng nhau
o skipgrams tạo data trong model skip gram,kết quả trả về 2 tuple nếu word xuất hiện cùng nhau là 1 nếu ko là 0.
Text Preprocessing tiền xử lý text
o Tokenizer giống kỹ thuật tokenizer là việc áp dụng các kĩ thuật máy tính để giúp máy tính giao lƣu với con ngƣời qua ngôn ngữ tự nhiên. Tạo tokenizer từ documment
o one_hot tạo data dạng one hot encoding
o text_to_word_sequence covert text thành sequence
Image Preprocessing tiền xử lý image
o ImageDataGenerator tạo thêm data bằng cách scale,rotation…
Các function trong bộ xƣơng của model
Các hàm loss functions thƣờng dùng :
o mean_squared_error thƣờng dùng trong regression tính theo eculic o mean_absolute_error tính theo trị tuyệt đối
o categorical_crossentropy dùng trong classifier nhiều class o binary_crossentropy dùng trong classifier 2 class
o kullback_leibler_divergence dùng để tính loss giữa phân phối thực tế và thực nghiệm
Metrics là thƣớc đo để đánh giá accuracy của model.
o binary_accuracy nếu y_true==y_pre thì trả về 1 ngƣợc lại 0,dùng cho 2 class
o categorical_accuracy tƣơng tự binary_accuracy nhƣng cho nhiều class
43 o SGD Stochastic gradient descent optimizer
o RMSprop RMSProp optimizer o Adam Adam optimizer
Activations để chọn activation function o linear nhƣ trong linear regression o softmax dùng trong multi classifier
o relu max(0,x) dùng trong các layer CNN, RNN để giảm chi phí tính tốn o tanh range (-1,1)
o Sigmoid range (0,1) dùng nhiều trong binary class
Callbacks : khi model quá lớn khi training thì gặp sự cố chúng ta muốn lƣu lại model để chạy lại thì callback giúp làm điều này.
o ModelCheckpoint lƣu lại model sau mỗi epoch
o EarlyStopping stop training khi training ko cải thiện model
o ReduceLROnPlateau giảm learning mỗi khi metrics ko đƣợc cải thiện
Datasets. Keras hỗ trợ một số dataset theo công thức :
o Cifar100 gồm 50,000 32x32 color training images, labeled over 100 categories, and 10,000 test images.
o Mnist data 70k image data hand written.
o Fashion_mnist Dataset of 70k 28x28 grayscale images of 10 fashion categories
o Imdb 25,000 movies reviews from IMDB, label đánh theo pos/neg o Reuters 11,228 newswires from Reuters, labeled over 46 topics o Boston_housing data giá nhà ở boston theo 13 features
Applications chứa các pre-training weight của các model deep learning nổi tiếng.Xception,VGG16,VGG19,resnet50,inceptionv3, InceptionResNetV2,Mobile Net,DenseNet,NASNet cẩu trúc chung nhƣ sau :
o Preprocess_input dùng để preprocessing input custom same với input của pretraining
44
Backends banckend có nghĩa là thay vì keras xây dựng từ đầu các công thức từ đơn giản đến phức tạp, thì nó dùng những thƣ viện đã xây dựng sẵn rồi và dùng thôi. Giúp tiết kiệm dc thời gian và chí phí. Trong keras có hỗ trợ 3 backend là tensorflow,theano và CNTK.
Initializers khởi tạo giá trị weight của coeff và bias trƣớc khi training lần lƣợt kernel_initializer and bias_initializer. mặc định là glorot_uniform phân phối uniform với giá trị 1/căn(input+output).
Regularizers Dùng để phạt những coeff nào tác động quá mạnh vào mỗi layer thƣờng dùng là L1 và L2
Constraints dùng để thiết lập các điều kiện ràng buộc khi training
Visualization giúp chúng ta plot lại cấu trúc mạng neral network.
Utils chứa các function cần thiết giúp ta xử lý data nhanh hơn. o Normalize chuẩn hóa data theo L2
o Plot_model giúp chúng ta plot model
o To_categorical covert class sang binary class matrix