Professional Documents
Culture Documents
Mạng CNN
Mạng CNN (Convolutional Neural Network) là một loại mạng nơ-ron sâu được
sử dụng rộng rãi trong xử lý hình ảnh, nhận dạng vật thể, phân loại ảnh và các
tác vụ liên quan đến xử lý ảnh và video. CNN được thiết kế để học các đặc
trưng từ dữ liệu ảnh và giảm thiểu sự phụ thuộc vào các biểu diễn đặc trưng
được xác định bằng tay.
CNN bao gồm các lớp chính sau:
1. Lớp Convolutional (Conv layer):
2. Lớp Pooling:
3. Lớp Activation:
4. Lớp Fully Connected (FC layer):
Kiến trúc CNN có thể được tùy chỉnh để phù hợp với các nhiệm vụ xử lý hình
ảnh khác nhau. Các kiến trúc CNN phổ biến nhất bao gồm LeNet-5, AlexNet,
VGG, ResNet và Inception. Các mạng CNN này có thể được điều chỉnh và tùy
chỉnh để đạt được kết quả tốt hơn trong các bài toán khác nhau.
Công thức của hàm Sigmoid và đạo hàm của nó được nêu ra dưới đây:
Hàm sigmoid là một hàm liên tục và đạo hàm của nó cũng khá đơn giản, dẫn
đến việc áp dụng hàm vào mô hình mạng đem lại sự dễ dàng trong việc xây
dựng mô hình và cập nhật tham số dựa trên back-propagation. Một điểm đáng
chú ý của hàm Sigmoid, khiến nó trở nên nổi bật trong thời gian gần đây lại là
điểm "bất lợi" của nó. Đó là khái niệm "Vanishing Gradient" :
1. Vanishing Gradient - Saturated Sigmoid Neurons:
Một neuron có activation function là hàm sigmoid được xem như bão hòa
(saturated) nếu nó đạt được giá trị lớn nhất, hoặc nhỏ nhất. Trong công thức
toán học của hàm Sigmoid, khi ta để đầu vào là một số cực lớn (dương vô
cùng), đầu ra của nó sẽ đạt giá trị rất gần 1, và ngược lại, giá trị của nó sẽ đạt 0
nếu ta đưa vào input 1 số cực bé (âm vô cùng).
Khi hàm số đạt được giá trị cực tiểu hay cực đại, ta nói hàm số bão hòa. Do đó,
đạo hàm của hàm Sigmoid trở thành 0 tại điểm bão hòa. Hãy cùng nhìn qua một
ví dụ để thấy được ảnh hưởng của vấn đề về sự bão hòa của sigmoid neuron.
Trong mạng "nhỏ" nhưng "sâu" trên hình, giả sử muốn tính đạo hàm của weight
w2 của hàm loss. Pre-activation và post-activation của neuron trong tầng ẩn thứ
3 là:
Và đã tính toán rất cẩn thận đạo hàm theo "chain rule":
Nếu 'h3' đạt được giá trị rất gần với giá trị bão hòa, giá trị của đạo hàm sẽ là 0.
Do đó sẽ không có sự cập nhật tham số nào ở đây cả. Đó là vanishing gradient
problem. Từ đây ta có thể thấy được rằng, một neuron đạt trạng thái bão hòa sẽ
khiến cho đạo hàm biến mất, và việc cập nhật trọng số sẽ bị ảnh hưởng rất
nhiều.
2. Tại sao hàm sigmoid lại bão hòa trong mô hình ?
Ta đã thấy vấn đề khi hàm đạt giá trị bão hòa nhưng tại sao và khi nào thì nó
bão hòa ? Nếu đầu vào của hàm là một số cực lớn hoặc cực bé (điều này có
nghĩa là input và weights đều phải là những số có tính chất tương tự) nó có
thể dẫn đến sự bão hòa. Chúng ta biết rằng trước khi đưa dữ liệu vào mô
hình mạng, dữ liệu hầu hết được tiền xử lý bằng cách chuẩn hóa các giá trị
về miền [0,1], điều này có thể giảm thiểu được khả năng trên. Ngoài ra, khi
khởi tạo weights cho mô hình chúng ta cũng nên tránh những giá trị quá lớn
vì nó cũng có thể dẫn đến việc hàm sigmoid bị bão hòa.
3. Hàm sigmoid không có tính chất Zero-centered !
Do điểm bão hòa của hàm số là 1 và 0 nên ta có thể dễ dàng nhận thấy được
trung bình của hàm không phải là 0. Một "zero-centered function" có tính
chất lấy 0 làm trung tâm miền giá trị, có nghĩa là giá trị của nó sẽ có thể lớn
hơn và nhỏ hơn 0.
Hãy cũng xem xét vấn đề mà điều này đem lại qua một ví dụ nhỏ dưới đây.
Xét 2 tầng cuối trong mạng. Trạng thái "pre-activation" của tầng gần cuối là
"a3".
Hãy thử tính toán đạo hàm của loss đối với w1 và w2:
Nhớ rằng h21 và h22 là output của sigmoid function vì vậy giá trị của chúng
luôn > 0. Vì vậy dấu của đạo hàm sẽ cùng dấu với phần được tô đỏ, do đó việc
cập nhật giữa các weights luôn cùng là dương, hoặc luôn cùng là âm. Do đó,
việc cập nhật sẽ chỉ diễn ra theo 1 số hướng nhất định, hạn chế sự linh hoạt của
mô hình.