You are on page 1of 3

Convolutional Neural Network (CNN):

I. Cách biệt giữa con người và máy móc


- Con người chúng ta có thể nhận biết được các vật thể khác nhau một cách dễ dàng từ
khi còn nhỏ. Tuy nhiên máy tính thì không như vậy, dữ liệu đưa vào máy tính là những
con số 0 và 1 và trên tư duy thông thường ta có thể thấy chỉ bằng cách nhìn vào một
chuỗi nhị phân thì việc phân biệt một bức hình chụp một chú chó và một chú mèo là gần
như bất khả thi.
II. Cách chúng ta nhận diện hình ảnh

- Bình thường chúng ta phân biệt các vật với nhau dựa trên các đặc tính đặc biệt của
chúng. Thí dụ như ta biết đó là một con chó thông qua các đặc điểm như: có bốn chân,
mõm dài, có đuôi,… và đó là một con mèo nếu nó có bốn chân và đuôi như con chó
nhưng mõm không dài và có đôi mắt đặc trưng. Vì vậy có thể nói nếu muốn máy tính có
thể nhận diện được các hình ảnh thì về cơ bản chúng phải nhận biết được các đặc tính
cơ bản của vật.
III. Từ sinh học đến máy học
- Vào năm 1962, một thí nghiệm được thực hiện bởi Hubel và Wiesel lên mèo đã chỉ ra
rằng một số tế bào nơron của mèo chỉ phản hồi (cháy) khi có sự hiện diện của các cạnh
(edges) với các cách xắp xếp khác nhau (ngang, dọc, chéo), Hubel và Wiesel nhận ra rằng
các nơron này được bố trí theo dạng cột giúp hình thành nên sự nhận biết hình ảnh. Ý
tưởng mà ở đó một số thành phần đảm nhiệm cho việc tìm kiếm một số hình dạng, đặc
điểm nhất định đã tạo tiền đề cho CNN.
IV. Cấu tạo của CNN

i. Lớp tích chập (Convolutional layer)


- Sau khi chúng ta input vào CNN một hình ảnh, máy tính sẽ chia hình ảnh đó thành các
pixel (điểm ảnh) dựa trên độ phân giải của ảnh và mỗi điểm ảnh sẽ nhận một giá trị nhất
định (từ 0 tới 255 với một bức ảnh gray-scale 8-bit)
- Một bộ lọc (filter) sau đó quét qua bức ảnh và tạo ra output. Ví dụ ta có một bức ảnh
32x32x3 (3 ở đây là giá trị RGB), và một bộ lọc 5x5. Giả sử ban đầu bộ lọc nằm ngay
ngắn bên góc trái trên cùng của ảnh, thì bộ lọc sẽ nhân các giá trị của bộ lọc với giá trị
của các pixel của ảnh gốc, và sau đó các phép nhân này sẽ được cộng lại và giá trị này sẽ
biểu diễn cho vị trí trên cùng góc trái của bức hình. Tương tự ta lặp lại điều này tại tất cả
các điểm còn lại trên hình gốc (bằng cách trượt filter sang phải 1 pixel và cứ thế cho đến
khi nó quét hết toàn bộ hình ảnh).
- Về cơ bản các filter sẽ có các giá trị (weights hoặc parameters) nhất định để có thể trả ra
giá trị lớn nhất khi chúng quét phải một số đặc điểm nhất định nào đó (ví dụ như đường
cong, cạnh thẳng đứng, cạnh chéo,…)
ii. Lớp ReLU
- Mô phỏng tỷ lệ truyền xung qua axon của nơron
iii. Lớp Pooling
- Đơn giản là một lớp filter (thường là 2x2) trả về giá trị lớn nhất trong vòng 4 pixel đó
(đối với maxpooling), điều này giúp làm giảm số lượng weights và parameters đi 75%
giúp đẩy nhanh tiến độ xử lí mà vẫn giữ được các đặc điểm quan trọng của output.
Ngoài ra còn tránh hiện tượng “ovefitting”.
- Có nhiều dạng pooling (max, average, L2-norm,…)
iv. Fully Connected Layers

- Sau khi mạng nơron đã có thể nhận diện các đặc điểm phức tạp thì chúng sẽ qua các lớp
này, các lớp này xem xét đầu ra của các lớp trước để xem đặc điểm nào là liên quan
nhất để xét tiếp rồi cho ra kết quả.
V. Cách mạng nơron học tập
- Có một câu hỏi quan trọng cần được giải đáp đó chính là làm sao các filter ở lớp đầu
tiên biết được chúng phải tìm các đường cong, đường xiên,…? Hay làm sao máy tính có
thể gán các weights/parameters cho các filters để chúng có thể nhận biết các đặc điểm
của vật? Việc máy tính tự điều chỉnh các thông số sao cho chúng đưa ra kết quả phù hợp
có thể đạt được thông qua hình thức huấn luyện gọi là “backpropagation”.
- Như con người từ khi mới sinh ra, chúng ta sẽ không thể nào tự nhiên biết được rằng
đây là con chim hoặc kia là con chó, mà phải qua những lần cha mẹ chúng ta chỉ cho
chúng ta thấy rằng đó là con chó hay kia là con chim, thì sau những lần như vậy, chúng
ta tự rút ra được các đặc điểm nhận diện một con chim hay một con chó. Máy tính cũng
tương tự như vậy, chúng không tự nhiên biết được cách nhận diện vật thể từ con số 0.
Mà phải qua nhiều lần sai và sửa thì mới thực hiện được.
- Ý tưởng huấn luyện CNN như sau: Ban đầu ta có một tập hình ảnh (ví dụ 100 nghìn tấm
hình chó và mèo) và chúng ta gán cho mỗi bức ảnh tên tương ứng với loài động vật bên
trong tấm ảnh đó (chó hoặc mèo) sau đó cho những tấm ảnh này đi qua CNN. Ban đầu
các giá trị của filters được cho ngẫu nhiên, và hình ảnh đi qua CNN sẽ được máy gán cho
một label tuỳ vào giá trị đầu ra (ví dụ như giá trị đầu ra 1 là con chó 0 là con mèo) Thì giả
sử ban đầu cho tấm ảnh mèo vào và máy cho ra kết quả là 1, máy sẽ đối chiếu với label
cho sẵn và kết luận là các giá trị weights/parameters này không phù hợp. Sau đó bằng
một số thuật toán mà chúng ta không tiện nhắc tới ở đây, máy tính sẽ thay đổi các giá trị
weights/parameters sao cho sai số của chúng so với kết quả giảm đi, và cứ thế trải qua
rất nhiều ví dụ các giá trị của các filters sẽ ngày càng chính xác hơn trong việc nhận diện
các hình ảnh.

You might also like