12/08/2018, 18:12

Tổng quan về Artificial Neural Network

Artificial Neural Network (ANN) gồm 3 thành phần chính: Input layer và output layer chỉ gồm 1 layer , hidden layer có thể có 1 hay nhiều layer tùy vào bài toán cụ thể. ANN hoạt động theo hướng mô tả lại cách hoạt động của hệ thần kinh với các neuron được kết ...



Artificial Neural Network (ANN) gồm 3 thành phần chính: Input layer và output layer chỉ gồm 1 layer , hidden layer có thể có 1 hay nhiều layer tùy vào bài toán cụ thể. ANN hoạt động theo hướng mô tả lại cách hoạt động của hệ thần kinh với các neuron được kết nối với nhau
Trong ANN, trừ input layer thì tất cả các node thuộc các layer khác đều full-connected với các node thuộc layer trước nó. Mỗi node thuộc hidden layer nhận vào ma trận đầu vào từ layer trước và kết hợp với trọng số để ra được kết quả. Ở trong course của Andrew Ng trên coursera, thầy sử dụng Logistic Regression ở các node.

Sơ qua về Logistic Regression:

Logistic Regression có activation function là hàm sigmoid :

Hàm hypothesys :

Đồ thị có dạng :

Cost function:

Với :

Vậy ta có cost function :

Kết hợp với Regurlarization:

Vậy với ANN với mỗi node thuộc layer khác input layer đều là một Logistic Regression ta sẽ có :

Công việc của chúng ta hiện tại là tìm ra được ΘThetaΘ sao cho J(Θ)J(Theta)J(Θ) min.
Để tìm cực tiểu của J(Θ)J(Theta)J(Θ) ta áp dụng thuật toán Gradient Descent.

Với α là learning rate.
Để thực hiện được thì cần phải tính được ∂∂ΘjJ(Θ)frac{∂}{∂Theta_{j}}J(Theta)ΘjJ(Θ), để tính được đạo hàm này là việc tương đối khó và ta cần thực hiện một thuật toán được gọi là backpropagation để tính.

Ta có mạng neural như sau :

Chú thích :
x1,x2x_{1},x_{2}x1,x2 là các features của input.
y1,y2y_{1},y_{2}y1,y2 là các output.
b1,b2b_1,b_2b1,b2 là các bias.
w1,w2,…,w8w_1,w_2,…,w_8w1,w2,,w8 là các trọng số.
Như cái tên của forward propagation , ta sẽ tiến hành tính toán a1,a2,y1,y2a_{1},a_{2},y_{1},y_{2}a1,a2,y1,y2 từ trái qua phải.

z1=x1w1+x2w3+b1z_{1}=x_{1} w_{1}+x_{2} w_{3}+b_{1}z1=x1w1+x2w3+b1
a1=sigmoid(z1)=11+ex1w1+x2w3+b1a_{1}=sigmoid(z_{1} )=frac{1}{1+e^{x_{1} w_{1}+x_{2} w_{3}+b_{1}}}a1=sigmoid(z1)=1+ex1w1+x2w3+b11

Tương tự :

z2=x1w2+x2w4+b2z_{2}=x_{1} w_{2}+ x_{2} w_{4}+b_{2}z2=x1w2+x2w4+b2
a2=11+ex1w2+x2w4+b2a_{2}=frac{1}{1+e^{x_{1} w_{2}+ x_{2} w_{4}+b_{2}}}a2=1+ex1w2+x2w4+b21
z3=a1w5+a2w7+b2z_{3}=a_{1} w_{5}+a_{2} w_{7}+b_{2}z3=a1w5+a2w7+b2
y1=11+ea1w5+a2w7+b2y_{1}=frac{1}{1+e^{a_{1} w_{5}+a_{2} w_{7}+b_{2}}}y1=1+ea1w5+a2w7+b21
z4=a1w6+a2w8+b2z_{4}=a_{1} w_{6}+a_{2} w_{8}+b_{2}z4=a1w6+a2w8+b2
y2=11+ea1w6+a2w8+b2y_{2}=frac{1}{1+e^{a_{1} w_{6}+a_{2} w_{8}+b_{2}}}y2=1+ea1w6+a2w8+b21

Forward propagation là một công đoạn tính toán giá trị tại từng node để phục vụ việc tính toán trong Back propagation.

Như đã nói ở trên, mục tiêu của back propagation là đi tính ∂∂ΘjJ(Θ)frac{∂}{∂Theta_{j}} J(Theta)ΘjJ(Θ).
Giả sử ta đang cần tính ∂∂Θ5J(Θ)frac{∂}{∂Theta_{5}} J(Theta)Θ5J(Θ).
Áp dụng chain rule ta tách ∂∂Θ5J(Θ)frac{∂}{∂Theta_{5}} J(Theta)Θ5J(Θ)thành :
∂∂w5J(w)=∂J(w)∂y1∗∂y1∂z3∗∂z3∂w5frac{∂}{∂w_{5}} J(w)= frac{∂J(w)}{∂y_1}* frac{∂y_1}{∂z_3}* frac{∂z_3}{&p

0