Trải qua một loạt các bài học về các model ML truyền thống, chắc hẳn các bạn cũng đã rất mong đợi đến bài học về mạng thần kinh nhân tạo - Artificial Neural Network (ANN). ANN chính là nền tảng cho học sâu (Deep learning) thứ mà đang được báo đài nhắc đến từng ngày, trong bài học ngày hôm nay chúng ta sẽ tìm hiểu kỹ hơn về ANN nhé !
Ý tưởng của ANN
ANN được hình thành bằng cách học theo cách mà não người xử lý thông tin. Các nơron sinh học của chúng ta tiếp nhận thông tin từ các sợi nhánh (Dendrite) và đưa vào nhân (Nucleus). Nhân nơron sẽ có trách nhiệm xử lý các thông tin đến và quyết định xem sẽ gửi tín hiệu gì tiếp theo đến các nơron khác thông qua sợi trục (Axon).
Source: link.springer.com
Vậy nơron nhân tạo thì sẽ có cấu tạo như nào ?
Nơron nhân tạo được thiết kế tương đồng như nơron sinh học. Nó sẽ tiếp nhận các tín hiệu đầu vào, ứng với mỗi tín hiệu này sẽ là một trọng số (weight). Các trọng số (weight) này đại diện cho mức độ quan trọng của tín hiệu đầu vào. Các nơron nhân tạo sẽ tổng hợp thông tin từ các đầu vào tương ứng theo trọng số (weight) của chúng và đưa vào hàm kích hoạt (activation function). Mạng thần kinh nhân tạo ANN được cấu tạo từ nhiều các nơron liên kết lại với nhau. Trong quá trình huấn luyện (training), các trọng số (weight) đầu vào của các nơron sẽ được tinh chỉnh sao cho phù hợp với tập huấn luyện (training set).
Nơron nhân tạo
Phần tổng hợp trên nơron nhân tạo chính là tổng trọng số của các đầu vào:
$u = \sum_{i=1}^{m} w_{i}x_{i}$
Phần tổng hợp $u$ sẽ được cộng thêm với hệ số bias $b$. Bias đóng vai trò như hệ số chặn (intercept) trong hàm số tuyến tính (linear function), nó giúp cho các đường tuyến tính (linear) tự do hơn, do đó nó còn được biết đến với một cái tên là hệ số tự do. Hình dưới đây sẽ minh họa rõ hơn về sự hữu ích của hệ số này. Nếu không có hệ số bias $b$, đường tuyến tính (linear) của hàm số $y = wx$ chỉ có thể đi qua gốc tọa độ (origin), như hình vẽ ở bên trái. Bằng việc thêm hệ số bias $b$, hàm số $y = wx + b$ trở nên tự do hơn như hình bên phải, giúp cho model của chúng ta có thể dễ dàng thích ứng (fit) với tập huấn luyện (training set).
Source: geeksforgeeks.org
Trước khi được đưa đến các nơron tiếp theo hoặc đầu ra, các tín hiệu được tổng hợp sẽ được đưa qua hàm kích hoạt (activation). Được ký hiệu toán học nhu sau:
$y = \varphi (u + b)$
Chúng ta sẽ tìm hiều kỹ hơn về hàm kích hoạt ở mục tiếp theo nhé !
Kiến trúc
Kiến trúc của một ANN bao gồm 3 lớp (layer) đó là lớp đầu vào (input layer), lớp ẩn (hidden layer) và lớp đầu ra (output layer). Thông tin sẽ được đi theo dạng truyền thẳng (feed forward) từ đầu vào cho đến đầu ra. Hình dưới đây mô tả kiến trúc cơ bản của một ANN:
Source: researchgate.net
Lớp đầu vào (input layer) sẽ có số nơron tương ứng với số biến không phụ thuộc (independent variable). Lớp đầu ra thì sẽ có số nơron tương ứng với số nhóm (class) trong bài toán phân loại (classification) hoặc chỉ là duy nhất một nơron trong trường hợp bài toán hồi quy (regression). Còn lớp ẩn (hidden layer) thì sao ?
Câu trả lời là chúng ta có thể lựa chọn tùy ý cả về số lượng lớp (layer) và số lượng nơron trong mỗi lớp (layer) mà không có một quy định nào cụ thể. Thường thì số lượng nơron hay được chọn sẽ là lũy thừa của 2, như 16, 32, 64, 128,… mà không có một lý do nào cụ thể. Về số lượng lớp ẩn (hidden layer) thì cần phải cân nhắc, càng nhiều lớp ẩn (hidden layer) sẽ càng khiến cho model quá vừa vặn (overfit) theo tập huấn luyện (training set). Hình sau sẽ mô tả sự thay đổi của vùng quyết định khi tăng số lượng lớp ẩn (hidden layer).
Source:slazebni.cs.illinois.edu
Huấn luyện
Quá trình huấn luyện (training) ANN được thực hiện thông qua cơ chế truyền ngược (backpropagation). Sai số giữa lớp đầu ra (output layer) và nhãn thực tế (groundtruth) sẽ được truyền ngược trở lại nhằm tinh chỉnh các trọng số (weight) giữa các kết nối. Câu hỏi được đặt ra ở đây là điều chỉnh tăng giảm các trọng số (weight) như nào để giảm thiểu sai số ?
Source:smarterbeta.wordpress.com
Việc này sẽ được thực hiện nhờ phương pháp được gọi là suy giảm độ dốc (gradient descent). Còn nhớ những năm cấp 3 chúng ta học phương pháp đạo hàm và áp dụng nó vào các phương trình nhằm tìm ra điểm cực tiểu (minumum point) và điểm cực đại (maximum point), bây giờ chúng ta cũng sẽ sử dụng nó nhằm tìm hướng đi cho các trọng số (weight). Hãy tưởng tượng lúc này chúng ta đang đi xuống một con dốc để xuống được đến chân dốc phần thấp nhất cũng tương ứng với điểm mà sai số thấp nhấp, suy giảm độ dốc (gradient descent) sử dụng đạo hàm (derivative) như một cây gậy chỉ đường, khi đạo hàm (derivative) âm, chúng ta gia tăng trọng số (weight), khi đạo hàm (derivative) dương, chúng ta sẽ giảm trọng số (weight) lại, như mô tả hình dưới đây.
Source: datahacker.rs
Trong hình trên chúng ta thấy các điểm màu xanh là các điểm dịch chuyển của sai số, khoảng cách giữa các điểm này được đặc trưng bởi tham số tốc độ học (learning rate). Tốc độ học (learning rate) càng lớn, các bước dịch chuyển càng dài hơn, dễ khiến cho sai số bật nhảy hỗn loạn, có thể bỏ qua mất điểm cực tiểu (minimum point). Ngược lại khi tốc độ học (learning rate) nhỏ, các bước dịch chuyển ngắn lại, lâu đạt đến được điểm cực tiểu, cũng như dễ bị kẹt lại ở các điểm cực tiểu cục bộ (local minimum), thay vì đạt đến điểm cực tiểu toàn cục (global minimum). Vì vậy việc lựa chọn một tốc độ học (learning rate) phù hợp là rất cần thiết, hoặc cần phải sử dụng phương pháp linh hoạt (adaptive) nhằm thay đổi tốc độ học (learning rate) theo từng giai đoạn.
Source: saugatbhattarai.com.np
Hàm kích hoạt
Hàm kích hoạt (activation function) luôn xuất hiện ở đầu ra của mỗi nơron, nó sẽ đưa ra quyết định xem có đưa thông tin đã được tổng hợp sang nơron khác hay không. Nhìn một cách tổng quát nó giống như một chiếc công tắc giúp bật tắt nơron. Có rất nhiều loại hàm kích hoạt (activation function) và những nhà nghiên cứu vẫn đang tìm những hàm kích hoạt (activation function) mới hiệu quả hơn, 4 hàm kích hoạt (activation function) dưới đây là thông dụng hơn cả:
Source: docs.paperspace.com
Trong đó Sigmoid-Softmax và Linear được sử dụng ở các nơron đầu ra, tương ứng cho bài toàn phân loại (classification) hay hồi quy (regression). Các hàm kích hoạt (activation function) Sigmoid, Tanh và ReLU còn được gọi là các hàm kích hoạt phi tuyến tính (non-linear activation function) và được dùng trong kết nối giữa các nơron với nhau. Nếu như hàm kích hoạt (activation function) Linear được sử dụng trong kết nối giữa các neuron, chúng ta sẽ vô hình chúng quy tất cả các lớp nơron về một vì tổng hợp các hàm tuyến tính thì vẫn sẽ là một hàm tuyến tính. Đó là lý do mà các hàm kích hoạt phi tuyến tính (non-linear activation function) được sử dụng, từ đây chúng ta có thể kết hợp các lớp nơron một cách đúng nghĩa, mang đến khả năng xử lý những dữ liệu phức tạp với độ chính xác cao.
Trong số 3 hàm kích hoạt phi tuyến tính (non-linear activation function) trên, ReLU là hàm kích hoạt thường được sử dụng hơn cả, do hiện tượng tiêu biến độ dốc (vanishing gradient) ở hàm kích hoạt (activation function) Sigmoid và Tanh. Hiện tượng tiêu biến độ dốc (vanishing gradient) xảy ra đối với các giá trị ở những điểm bão hòa của hàm số Tanh và Sigmoid, lúc này đạo hàm (derivative) trở nên rất nhỏ, hậu quả làm cho việc thay đổi các trọng số (weight) trong quá trình huấn luyện (training) gần như bằng 0, việc huấn luyện (training) của model gần như không có tác dụng. Giáo sư dạy mình môn học này có một ví dụ rất hay về hiện tượng này, đó là như khi bạn nhấn ga một chiếc xe nhưng nó gần như không nhúc nhích về phía trước. Với hàm kích hoạt (activation function) ReLU, các giá trị dương giờ đây được giữ nguyên giá trị, không còn những điểm bão hòa nữa, đạo hàm (derivative) luôn có độ lớn đủ tốt cho việc huấn luyện (training).
Source: towardsdatascience.com
Kết
Như vậy trong bài học ngày hôm nay chúng ta đã tìm hiểu về ý tưởng, cấu tạo, cách vận hành và huấn luyện một mạng thần kinh nhân tạo ANN, trong bài học tiếp theo chúng ta sẽ bắt tay xây dựng một ANN để giải quyết bài toán phân loại nhé ! Nếu còn gì thắc mắc, đừng ngại ngần hãy nhắn tin với admin qua fanpage để được giải đáp ngay nhé 💪
-
Previous
[Thực Hành] Bài 14 Máy vector hỗ trợ - Support Vector Machine -
Next
[Thực hành] Bài 16 Mạng thần kinh nhân tạo - Artificial Neural Network