Neural Network Fundamental 2: Representation and Forward Propagation
Dưới đây là biểu diễn của mạng neural với 2 lớp Các input feature x1x_1 x 1 , x2x_2 x 2 , ... được xếp chồng lên nhau và được gọi là input layer Lớp tiếp theo chứa các node là sự kết hợp của các node trong input layer ...
Dưới đây là biểu diễn của mạng neural với 2 lớp
- Các input feature x1x_1x1, x2x_2x2, ... được xếp chồng lên nhau và được gọi là input layer
- Lớp tiếp theo chứa các node là sự kết hợp của các node trong input layer được gọi là hidden layer
- Lớp cuối cùng chỉ có một node, chứa giá trị dự đoán y^hat{y}y^ được gọi là output layer Để tiện cho việc tính toán, ta sẽ vector hóa các node trong mỗi layer bằng các vector aaa
- Số ở trên dấu ngoặc vuông trên đầu của aaa thể hiện số layer. Số layer được đánh số từ 0 ở input layer
- Số ở dưới của aaa thể hiện node thứ mấy trong lớp đó Ví dụ vector aaa ở input layer a[0]=[a1[0]a2[0]a3[0]]a^{[0]} = egin{bmatrix}a^{[0]}_1a^{[0]}_2 a^{[0]}_3end{bmatrix}a[0]=⎣⎢⎡a1[0]a2[0]a3[0]⎦⎥⎤ Mạng neural như trên hình được gọi là mạng neural 2 lớp vì chúng ta không đếm input layer
Forward Propagation hiểu nôm na là bắt đầu từ input, ta sẽ tính toán giá trị các neural của từng lớp một, đến cuối cùng sẽ tính ra giá trị của lớp output. Như đã nói ở phần Artificial Neural trong phần 1 mỗi giá trị aaa ở một neural (node) sẽ được tính toán qua 2 bước z=∑iwixi+b=w⊺xz = sum_{i}w_ix_i + b = old{w}^intercalold{x}z=∑iwixi+b=w⊺x + b a=σ(z)a = sigma(z)a=σ(z) Trong đó z gọi là giá trị pre-activation, còn a gọi là giá trị activation, www và bbb là các parameter của neural network. Mục đích cuối cùng của chúng ta là optimize các parameter này sao cho neural network có thể output một cách chính xác nhất
Tính toán ở hidden layer
Dựa vào nguyên tắc trên, ta bắt đầu tính toán ở neural đầu tiên của hidden layer
- z1[1]z^{[1]}_1z1[1]: số ở trên cho ta biết zzz thuộc lớp thứ 1, số ở dưới thể hiện đây là giá trị pre-activation của neural đầu tiên của lớp này
- w1[1]w^{[1]}_1w1[1]: số ở trên thể hiện đây là vector www để tính toán lớp thứ 1, số ở dưới thể hiện w này là để tính toán neural thứ 1
- b1[1]b^{[1]}_1b1[1] và a1[1]a^{[1]}_1a1[1]: cũng thể hiện tương ứng
Tương tự như vậy ta tính toán cho neural thứ 2 của hidden layer Tính toán hết với cả 4 neural của hidden layer ta được z1[1]z^{[1]}_1z1[1] = w1[1]⊺x+b1[1],a1[1]=σ(z1[1])w^{[1]intercal}_1x + b^{[1]}_1, a^{[1]}_1 = sigma(z^{[1]}_1)w1[1]⊺x+b1[1],a1[1]=σ(z1[1]) z2[1]z^{[1]}_2z2[1] = w2[1]⊺x+b2[1],a2[1]=σ(z2[1])w^{[1]intercal}_2x + b^{[1]}_2, a^{[1]}_2 = sigma(z^{[1]}_2)w2[1]⊺x+b2[1],a2[1]=σ(z2[1]) z3[1]z^{[1]}_3z3[1] = w3[1]⊺x+b3[1],a3[1]=σ(z3[1])w^{[1]intercal}_3x + b^{[1]}_3, a^{[1]}_3 = sigma(z^{[1]}_3)w3[1]⊺x+b3[1],a3[1]=σ(z3[1]) z4[1]z^{[1]}_4z4[1] = w4[1]⊺x+b4[1],a4[1]=σ(z4[1])w^{[1]intercal}_4x + b^{[1]}_4, a^{[1]}_4 = sigma(z^{[1]}_4)w4[1]⊺x+b4[1],a4[1]=σ(z4[1]) Trong code ta có thể dùng vòng lặp for để tính các giá trị z và a của hidden unit, nhưng làm như vậy mất rất nhiều thời gian. Do đó, ta sẽ vector hóa việc tính toán lại Đầu tiên ta sẽ xếp các vector w1[1]⊺w^{[1]intercal}_1w1[1]⊺, w2[1]⊺w^{[1]intercal}_2w2[1]⊺, w3[1]⊺w^{[1]intercal}_3w3[1]⊺, w4[1]⊺w^{[1]intercal}_4w4[1]⊺ lại thành matrix W[1]W^{[1]}W[1], các giá trị của b thành vector b[1]b^{[1]}b[1]. Số index trên đầu thể hiện đây là các parameter của lớp 1 W[1]=[−w1[1]⊺−−w2[1]⊺−−w3[1]⊺−−w4[1]⊺−]b[1]=[b1[1]b2[1]b3[1]b4[1]]W^{[1]} =egin{bmatrix}-w^{[1]intercal}_1--w^{[1]intercal}_2--w^{[1]intercal}_3--w^{[1]intercal}_4-end{bmatrix} qquad b^{[1]} = egin{bmatrix}b^{[1]}_1^{[1]}_2 b^{[1]}_3^{[1]}_4end{bmatrix}W[1]=⎣⎢⎢⎢⎡−w1[1]⊺−−w2[1]⊺−−w3[1]⊺−−w4[1]⊺−⎦⎥⎥⎥⎤b[1]=⎣⎢⎢⎢⎡b1[1]b2[1]b3[1]