Các thành phần cơ bản của mạng nơron nhân tạo

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng hệ thống dự đoán khả năng nhập học của học sinh vào trường cao đẳng kỹ thuật công nghệ bà rịa vũng tàu (Trang 42)

CHƯƠNG 1 GIỚI THIỆU MACHINE LEARNING CƠ BẢN

2.3. Các thành phần cơ bản của mạng nơron nhân tạo

2.3.1. Đơn vị xử lý

Đơn vị xử lý được gọi là một nơ ron hay một nút (node), thực hiện một công việc rất dễ dàng: nó nhận tín hiệu vào từ các đơn vị phía trước hoặc một nguồn bên ngoài và sử dụng chúng để tính tín hiệu ra sẽ được lan truyền sang các đơn vị khác [13].

Trong một mạng nơ ron có ba đơn vị xử lý như sau:

- Các đơn vị đầu vào (Input units), nhận tín hiệu đầu vào từ bên ngoài. - Các đơn vị đầu ra (Output units), gửi dữ liệu sau xử lý ra bên ngoài.

- Các đơn vị ẩn (Hidden units), tín hiệu nằm giữa các đơn vị đầu vào (input) và các đơn vị đầu ra (output).

Mỗi đơn vị j có thể có một hoặc nhiều đầu vào: x0, x1, x2, … xn, nhưng chỉ có duy nhất một đầu ra zj. Một đầu vào của một đơn vị có thể bao gồm dữ liệu từ bên ngoài mạng đưa vào, hoặc đầu ra của một đơn vị khác sẽ là đầu vào của đơn vị kế tiếp, đặc biệt hơn đầu vào của một đơn vị có thể là đầu ra của chính nó [8].

Trong mạng nơ ron có ba kiểu nơ ron:

 Nơ ron đầu vào, nơ ron này sẽ nhận tín hiệu vào từ các nguồn bên ngoài.  Nơron ẩn, nằm giữa tín hiệu vào và tín hiệu ra.

Hình 2.3. Mô hình mạng Noron nhân tạo

2.3.2. Hàm kết hợp

Hàm kết hợp (combination function) là hàm thực hiện việc kết hợp các giá trị đầu vào thông qua các liên kết với các đơn vị khác và được xác định bằng một luật lan truyền cụ thể [7].

2.3.3. Hàm kích hoạt

Đa số các đơn vị trong mạng nơ ron chuyển dữ liệu đầu vào bằng cách sử dụng một hàm vô hướng (scalar-to-scalar function) gọi là hàm kích hoạt, kết quả của hàm này là một giá trị gọi là mức độ kích hoạt của đơn vị (unit's activation). Giá trị kích hoạt được đưa vào một hay nhiều đơn vị khác để loại trừ khả năng đơn vị đó thuộc lớp đầu ra. Các hàm kích hoạt thường bị khống chế vào một khoảng giá trị xác định, do vậy các hàm đó thường được gọi là các hàm bẹp (squashing). Người ta thường sử dụng các hàm kích hoạt như:

Hàm đồng nhất (Linear function, Identity function): là hàm mà các đầu vào là một đơn vị. Ngoài ra một hằng số được nhân với net-input cũng có thể tạo ra một hàm đồng nhất.

Hàm bước nhị phân (Binary step function, Hard limit function): thường được sử dụng trong các mạng chỉ có một lớp. Ngoài ra nó cũng có tên gọi khác là "Hàm ngưỡng" (Threshold function hay Heaviside function).

Hàm sigmoid (Sigmoid function (logsig)): Hàm này hữu ích cho các mạng được huấn luyện bởi sử dụng thuật toán Lan truyền ngược (back-propagation), nguyên nhân là do nó có thể lấy đạo hàm một cách dễ dàng, cho nên trong quá trình huấn luyện sẽ giảm đáng kể việc tính toán.

Hàm sigmoid lưỡng cực (Bipolar sigmoid function (tansig)): Các thuộc tính của hàm này tương tự hàm sigmoid. Các ứng dụng có đầu ra nằm trong trong khoảng [-1,1] hoạt động tốt đối với hàm sigmoid lưỡng cực [7].

Khả năng biểu diễn các hàm phi tuyến giúp cho các mạng nhiều tầng có khả năng hoạt động tốt trong các ánh xạ phi tuyến. Đối với luật học lan truyền ngược, hàm phải khả vi (differentiable) và sẽ cho kết quả tối ưu nếu như hàm được gắn trong một khoảng nào đó. Do vậy, hàm sigmoid là hàm thông dụng nhất.

2.4. Mạng truyền thẳng nhiều lớp và thuật toán lan truyền ngược

2.4.1.Mạng truyền thẳng nhiều lớp 2.4.1.1. Kiến trúc mạng 2.4.1.1. Kiến trúc mạng

Một mạng truyền thẳng nhiều lớp sẽ bao gồm một lớp vào (Input Layer), một lớp ra (Output Layer) và một hoặc nhiều lớp ẩn (Hidden Layers). Các lớp đầu vào nhận tín hiệu vào và cung cấp cho các nơron trong lớp ẩn. Các nơ ron đầu vào sẽ không thực hiện chức năng phân tích, thống kê. Các nơron lớp ẩn sẽ tìm ra các tính năng của các nơ ron đại diện cho các tính năng ẩn của lớp đầu vào. Những tính năng này sẽ được phân tích và sử dụng bởi các lớp đầu ra để xác định mô hình đầu ra [7], [20].

Trong mạng nơ ron truyền thẳng các giá trị đầu vào x được truyền thông qua trọng số kết nối tới các nơ ron lớp ẩn sau đó đưa tới lớp ra. Trọng số kết nối từ phần tử vào thứ i tới nơ ron ẩn thứ j được ký hiệu là wij, trọng số kết nối từ nơ ron ẩn thứ j

Hình 2.4. Mạng truyền thẳng nhiều lớp Với nơ ron ẩn thứ j: Với nơ ron ẩn thứ j:

𝑎𝑗 = ∑𝑛𝑖=1𝑊𝑖𝑗𝑥𝑖 + 𝜃𝑗,𝑦𝑖 = 𝑓(𝑎𝑗) (3.4)

Với nơron đầu ra thứ k:

𝑎𝑘 = ∑𝑘𝑗=1𝑣𝑘𝑗𝑦𝑗 + 𝜃𝑘,𝑧𝑘 = 𝑓(𝑎𝑘) (3.5)

Hàm kích hoạt:

𝑓(𝑥) = 1

1+𝑒−𝑥 (3.6)

Hàm f đơn điệu tăng, khả vi và cho giá trị thuộc [0; 1].

Với một mẫu đầu vào được cho trước, mạng sẽ tạo ra giá trị đầu ra thực tế zk , giá trị này được so sánh với giá trị mẫu mong muốn ở đầu ra dk . Các trọng số của mạng sau đó được hiệu chỉnh để giảm lỗi và đưa ra các mẫu tiếp theo. Sau đó trọng

số sẽ tiếp tục được hiệu chỉnh tới khi tổng lỗi qua tất cả các mẫu học được giảm tới mức cho phép. Thuật toán học này được hiểu như thuật toán lan truyền ngược [17].

2.4.1.2. Khả năng biểu diễn

Mạng một lớp có khả năng biểu diễn các hàm tách được tuyến tính, chẳng hạn hàm logic AND có thể phân chia được bằng một đường thẳng trong khi miền giá trị của hàm XOR thì không.

Mạng có một lớp ẩn có thể xấp xỉ tốt bất kỳ một ánh xạ liên tục nào từ một không gian hữu hạn này sang một không gian hữu hạn khác, chỉ cần cung cấp đủ số nơ ron trong lớp ẩn [14].

2.4.1.3. Số lớp ẩn

Về lý thuyết, các mạng có hai lớp ẩn có thể biểu diễn các hàm với dáng điệu bất kỳ, nên không có lý do nào sử dụng mạng có nhiều hơn hai lớp ẩn. Đối với phần lớn các bài toán cụ thể, người ta đã xác định rằng chỉ cần sử dụng một lớp ẩn là đủ. Các bài toán sử dụng hai lớp ẩn rất ít khi xảy ra trong thực tế. Nếu sử dụng nhiều lớp ẩn thì việc huấn luyện mạng thường rất chậm là do:

Đa số các thuật toán luyện mạng cho các mạng nơron truyền thẳng đều dựa trên phương pháp gradient. Các lớp thêm vào sẽ thêm việc phải lan truyền các lỗi làm cho véc tơ gradient rất không ổn định [9].

Càng có nhiều lớp ẩn thì số các cực trị địa phương tăng lên càng nhiều. Phần lớn các thuật toán tối ưu dựa trên gradient chỉ tìm ra các cực trị địa phương, do vậy chúng có thể không tìm ra cực trị toàn cục.

Tuy nhiên, có thể đối với một bài toán cụ thể, sử dụng nhiều hơn một lớp ẩn với số ít nơron thì tốt hơn là sử dụng ít lớp ẩn với số nơron là lớn, đặc biệt đối các mạng cần phải học các hàm không liên tục [10].

2.4.1.4. Số nơ ron trong lớp ẩn

Trong thiết kế một mạng vấn đề quan trọng là mỗi tầng cần có bao nhiêu nơ ron. Số lượng nơ ron trong mỗi lớp quá ít sẽ dẫn đến việc không thể nhận dạng được

nhiều nơ ron sẽ tăng thời gian luyện mạng, khi mà không thể luyện mạng trong một thời gian hợp lý khi có quá nhiều để luyện. Tình trạng quá khớp có thể xảy ra nếu số lượng các nơron quá lớn, trong trường hợp này mạng có quá nhiều thông tin, hoặc lượng thông tin trong tập ví dụ huấn luyện không đủ các dữ liệu đặc trưng để huấn luyện mạng [13].

Số lượng các nơ ron lớp ẩn phù hợp phụ thuộc vào rất nhiều yếu tố như: số đầu vào, số trường hợp trong tập mẫu, số đầu ra của mạng, độ nhiễu của dữ liệu đích, độ phức tạp của hàm lỗi, kiến trúc mạng và thuật toán luyện mạng.

Có rất nhiều luật để lựa chọn số nơ ron trong các lớp ẩn, chẳng hạn: m [t,n]

giữa khoảng kích thước lớp vào, lớp ra.

𝑚 = 2(𝑡+𝑛)

3 : 2/3 tổng kích thước lớp vào và lớp ra

𝑚 < 2𝑡 : nhỏ hơn hai lần kích thước lớp vào

𝑚 = √𝑡. 𝑛 : căn bậc hai của tích kích thước lớp vào và lớp ra

Các luật này chỉ được coi như là các lựa chọn thô khi chọn lựa kích thước của các lớp. Chúng không phản ánh được thực tế, bởi vì chúng chỉ xem xét đến nhân tố kích thước đầu vào, đầu ra mà bỏ qua các nhân tố quan trọng khác như: số trường hợp đưa vào huấn luyện, độ phức tạp của hàm lỗi, độ nhiễu ở các đầu ra mong muốn, kiến trúc của mạng và thuật toán học [17].

Đa số các trường hợp, không có một cách để có thể dễ dàng xác định được số tối ưu các đơn vị trong lớp ẩn mà cách tốt nhất là dùng phương pháp Thử - Sai. Trong thực tế có thể lựa chọn phương pháp “Lựa chọn tiến” hay “Lựa chọn lùi” để xác định số đơn vị trong lớp ẩn.

Cần chọn một luật hợp lý dùng để đánh giá hiệu năng của mạng công việc này được gọi là lựa chọn tiến. Sau đó, ta chọn một số ít các nơ ron ẩn, huấn luyện và kiểm tra lại mạng, ghi lại hiệu năng của mạng. Tiếp theo tăng một số ít các nơron ẩn, huấn luyện và thử lại cho đến khi lỗi là chấp nhận được, hoặc không có tiến triển đáng kể so với trước.

Ngược lại, lựa chọn lùi bắt đầu với một số lớn nơ ron trong lớp ẩn, sau đó giảm dần. Đây là quá trình mất nhiều thời gian nhưng sẽ giúp ta tìm được số lượng nơ ron

phù hợp cho lớp ẩn [17].

2.4.2. Thuật toán lan truyền ngược (Back – Propagation Algorithm)

Kiến trúc của một mạng và thuật toán học của mạng cần có sự phân biệt rõ ràng, các mô tả đưa ra mục đích nhằm làm rõ các yếu tố về kiến trúc của mạng và cách mà mạng tính toán các đầu ra từ tập các đầu vào. Cụ thể mô tả thuật toán học sử dụng để điều chỉnh hiệu năng của mạng sao cho mạng có thể cho kết quả mong muốn.

Như đã biết có hai dạng thuật toán để luyện mạng đó là: học có giám sát và học không giám sát. Các mạng nơron truyền thẳng nhiều lớp được huấn luyện bằng phương pháp học có giám sát. Đây là phương pháp yêu cầu mạng thực hiện chức năng của nó và trả lại kết quả, sử dụng kết quả đó với các đầu ra mong muốn để điều chỉnh các tham số của mạng, nghĩa là mạng sẽ học thông qua những sai sót của nó [8], [20].

Về cơ bản, thuật toán lan truyền ngược là dạng tổng quát của thuật toán trung bình bình phương tối thiếu(Least Means Square - LMS) bởi lẽ nó cùng sử dụng kỹ thuật giảm theo hướng véc tơ gradient nhưng với độ phức tạp của hàm lỗi lớn hơn. Thuật toán này thuộc dạng thuật toán xấp xỉ để tìm các điểm mà tại đó hiệu năng của mạng là tối ưu. [17].

2.4.2.1. Sử dụng thuật toán lan truyền ngược

Ở nội dung này sẽ nghiên cứu về các khía cạnh ứng dụng của thuật toán lan truyền ngược như chọn lựa cấu trúc mạng, sự hội tụ và khả năng tổng quát hoá.

Chọn lựa cấu trúc của mạng

Nếu có đủ số nơron trong các lớp ẩn thì thuật toán lan truyền ngược được sử dụng để bất kỳ một hàm số nào đạt mức xấp xỉ. Tuy vậy, ta chưa biết được một số cụ thể các lớp và số nơron trong mỗi lớp cần sử dụng [5].

Để có cái nhìn chi tiết hơn về vấn đề này ta sẽ nghiên cứu một ví dụ. Ví dụ, ta muốn xấp xỉ hàm số sau:

𝑓(𝑥) = 1 + sin (𝑖𝜋

4 𝑥) 𝑣ớ𝑖 − 2 ≤ 𝑥 ≤ 2

Trong đó i nhận các giá trị 1, 2, 4 và 8. Hàm số cần xét sẽ trở nên khó khăn hơn khi i tăng do nhận được nhiều chu kỳ của hình sin trong phạm vi [-2,2]. Khi đó, nếu

i tăng, mạng nơron với một số nơron cố định sẽ khó có thể xấp xỉ được hàm. Ta sẽ sử dụng ví dụ Function approximation trong thư viện của bộ Matlab 6.0 (tệp nnd11fa.m). Mạng có một đầu vào và một đầu ra, mạng sử dụng có một lớp ẩn, một lớp ra [19].

Lớp ra dùng hàm tuyến tính, lớp ẩn sử dụng hàm Sigmoid. Số nơron trong lớp ẩn là 3, kết quả xấp xỉ của mạng trong các trường hợp i = 1, 2, 4, 8 như trong các hình dưới đây:

b,Trường hợp i=2

d,Trường hợp i=8

Xấp xỉ hàm𝑓(𝑥) = 1 + sin (𝑖𝜋

4 𝑥) 𝑣ớ𝑖 − 2 ≤ 𝑥 ≤ 2

Nếu tăng số nơron trong lớp ẩn lên thì khả năng xấp xỉ hàm số của mạng sẽ tốt hơn. Ví dụ sử dụng 8 nơron trong lớp ẩn và i=8 ta có được kết quả sau:

Trường hợp i=8 và số nơron lớp ẩn là 8 p

Như vậy nếu muốn xấp xỉ một hàm số mà có số điểm cần xấp xỉ là lớn thì ta sẽ cần số nơron lớn hơn trong lớp ẩn [13].

Sự hội tụ

Thuật toán lan truyền ngược đã thực hiện tối thiểu hoá trung bình bình phương lỗi nhưng mạng nơron không trả lại kết quả chính xác. Nguyên nhân là do khả năng của mạng bị giới hạn bởi số nơron trong lớp ẩn. Tuy nhiên cũng có trường hợp mạng vẫn có thể xấp xỉ được hàm số mặc dù thuật toán lan truyền ngược không cho ta các tham số có thể dẫn đến kết quả chính xác. Sau khi huấn luyện, mạng có thể rơi vào điểm cực tiểu toàn cục hoặc rơi vào điểm cực tiểu địa phương, điều này xảy ra là do trạng thái khởi đầu của mạng [18], [19].

Trong thuật toán LMS cần chú ý luôn tồn tại điểm cực trị toàn cục là do hàm trung bình bình phương lỗi của thuật toán LMS là hàm bậc hai, mà đạo hàm bậc hai của hàm lỗi sẽ là hằng số, do vậy độ cong của hàm theo một hướng cho trước là cố định. Trong khi đó thuật toán lan truyền ngược ứng dụng cho các mạng nhiều lớp sử dụng các hàm kích hoạt phi tuyến sẽ có nhiều điểm cực trị địa phương và độ cong của hàm lỗi có thể thay đổi không theo một hướng cho trước [19].

Sự tổng quát hoá

Đa số mạng nơron truyền thẳng nhiều lớp được huấn luyện bởi một số các mẫu cố định để mạng hoạt động đúng:

{(𝑝1, 𝑡1), (𝑝2, 𝑡2), . . . , (𝑝𝑞, 𝑡𝑞)}

Ở đây pi là các đầu vào, ti là đầu ra mong muốn tương ứng. Tập huấn luyện này thường thể hiện số lớn nhất của các lớp mà mạng huấn luyện. Mạng nơ ron sau khi học xong nó có thể tổng quát hoá những cái đã học. Nếu trong trường hợp dữ liệu có nhiễu thì mạng vẫn có khả năng hoạt động tốt [16].

Mạng có số tham số ít hơn số dữ liệu có trong tập ví dụ huấn luyện thì mạng sẽ có khả năng tổng quát hoá tốt. Trong các mạng nơron, cũng như các bài toán mô hình hoá, ta thường mong muốn sử dụng một mạng đơn giản nhất mà có thể cho kết quả tốt trên tập ví dụ huấn luyện.

mạng. Ta chia tập dữ liệu thu được thành ba tập: tập ví dụ huấn luyện dùng để tính toán gradient và cập nhật các trọng số của mạng, tập kiểm tra dùng để so sánh khả năng tổng quát hoá của mạng đối với các bộ tham số sau các lần huấn luyện và tập kiểm định được dùng để kiểm tra điều kiện dừng của mạng [10].

2.4.2.2. Một số biến thể của thuật toán lan truyền ngược

Thuật toán lan truyền ngược có đặc điểm sử dụng kỹ thuật giảm hướng. Tuy nhiên mạng nơron truyền thẳng nhiều lớp sử dụng các hàm kích hoạt phi tuyến rơi vào điểm cực tiểu địa phương là nhược điểm của thuật toán này. Hơn nữa, khi thực hiện luyện mạng bằng cách đưa từng ví dụ huấn luyện vào, sau đó thực hiện cập nhật tham số, sẽ làm ảnh hưởng đến quá trình học các ví dụ khác. Do đó, một phương pháp để tăng tốc độ hội tụ là sử dụng phương pháp học theo lô (batch training), nghĩa là tất cả các ví dụ huấn luyện được đưa vào mạng, sau đó mới thực hiện cập nhật các tham số. Sau đây là một số biến thể của thuật toán lan truyền ngược sử dụng phương pháp

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng hệ thống dự đoán khả năng nhập học của học sinh vào trường cao đẳng kỹ thuật công nghệ bà rịa vũng tàu (Trang 42)