Nghiên cứu về mạng nơron.
MỤC LỤC
MỤC LỤC ............................................................................................................................................. 1
CHƯƠNG 1: TỔNG QUAN MẠNG NƠRON NHÂN TẠO .............................................................. 2
1. Giới thiệu chung ............................................................................................................................ 2
2. Ý tưởng sinh học ........................................................................................................................... 2
3. Mô hình nơron nhân tạo cơ bản .................................................................................................... 4
4. Sử dụng mạng nơron nhân tạo ...................................................................................................... 6
5. Thu thập dữ liệu cho mạng nơron nhân tạo .................................................................................. 7
6. Perceptron nhiều lớp ..................................................................................................................... 8
6.1. Huấn luyện Perceptron nhiều lớp .......................................................................................... 9
6.2. Thuật toán backpropagation. .................................................................................................. 9
6.3. Học quá mức và tổng quát hóa ............................................................................................ 10
6.4. Chọn lựa dữ liệu ................................................................................................................... 12
CHƯƠNG 2: MÔ HÌNH MẠNG NƠRON NHÂN TẠO .................................................................. 13
1. Mô hình nơron và cấu trúc mạng ................................................................................................ 13
1.1. Mô hình nơron ...................................................................................................................... 13
1.2. Cấu trúc mạng ..................................................................................................................... 15
2. Cấu trúc dữ liệu ........................................................................................................................... 16
3. Kiểu huấn luyện .......................................................................................................................... 17
4. Kết luận ....................................................................................................................................... 17
CHƯƠNG 3: BACKPROPAGATION ............................................................................................... 18
1. Tổng quát ..................................................................................................................................... 18
1.1. Cấu trúc ................................................................................................................................ 18
1.2. Huấn luyện mạng ................................................................................................................. 21
2. Huấn luyện nhanh ........................................................................................................................ 23
2.1. Giải thuật tốc độ học thay đổi (TRAINDA,TRAINDX) ................................................... 24
2.2. Giải thuật phục hồi mạng backpropagation (TRAINRP) .................................................... 24
2.3. Giải thuật conjugate_ gradient ............................................................................................. 25
2.4. Các thuật toán quasi – newton ............................................................................................. 27
2.5. Giải thuật Levenberg_Marquardt giảm bộ nhớ (TRAINLM) ............................................. 28
• Dễ sử dụng: mạng nơron nhân tạo có tính học theo các ví dụ. Người sử dụng mạng
nơron nhân tạo thu thập các dữ liệu đặc trưng, và sau đó gọi các thuật toán huấn
luyện để có thể tự học cấu trúc của dữ liệu. Mặc dù người sử dụng làm tất cả những
điều cần thiết để có thể chọn và chuẩn bị dữ liệu, sử dụng loại mạng phù hợp và có
thể hiểu được các kết quả, nhưng mức độ người sử dụng biết cách áp dụng thành
công mạng nơron nhân tạo vẫn thấp hơn nhiều những người sử dụng các phương
pháp thống kê truyền thống…
Mạng nơron nhân tạo dựa trên việc mô phỏng cấp thấp hệ thống nơron sinh học. Trong
tương lai với sự phát triển mô phỏng nơron sinh học, chúng ta có thể có loại máy tính thông minh
thật sự.
2. Ý tưởng sinh học
Mạng nơron nhân tạo phát triển từ nghiên cứu về trí tuệ nhân tạo; đặc biệt cố gắng bắt
chước bộ não có cấu trúc cấp thấp về khả năng học và chấp nhận sai của hệ thống nơron sinh học.
Suốt những năm 1960 – 1980 các nhà nghiên cứu về trí tuệ nhân tạo đã tìm ra Expert
Systems dựa trên mô hình cấp cao về xử lý lý luận của bộ não. Mặc dù mô hình đã rất thành công
trong một vài lĩnh vực, nhưng vẫn chưa bắt chước được trí tuệ con người. Điều này là do cấu trúc
2
Nghiên cứu về mạng nơron.
mô hình chưa bằng bộ não. Do đó, để tái tạo trí thông minh, chúng ta cần phải xây dựng những hệ
thống có cấu trúc giống bộ não con người.
Bộ não con người gồm một số rất lớn nơron (khoảng 10.000.000.000 nơron) kết nối với
nhau (trung bình mỗi nơron kết nối với hàng chục ngàn nơron khác). Mỗi nơron là một tế bào đặc
biệt, có thể truyền các tín hiệu điện. Nơron có cấu trúc rễ ngõ vào, thân tế bào và cấu trúc rễ ngõ ra
(sợi thần kinh). Các sợi thần kinh của một tế bào kết nối với các tế bào khác thông qua synapse.
Khi một nơron kích hoạt, nó tạo ra xung điện hóa học dọc theo sợi thần kinh. Tín hiệu này đi qua
các synapse đến các nơron khác, và tiếp tục bị kích hoạt. Nơron hoạt động chỉ khi tất cả các tín
hiệu nhận được ở thân tế bào thông qua rễ ngõ vào vượt quá một mức nào đó (ngưỡng hoạt động).
Cường độ tín hiệu thu được của nơron phụ thuộc vào độ nhạy của synapse. Chỉ có việc học
làm thay đổi cường độ kết nối synapse. Ví dụ như theo thí nghiệm có điều kiện Pavlovian cổ điển,
gõ chuông trước khi cho chó ăn tối, con chó nhanh chóng học được rằng rung chuông gắn liền với
nhiên, nếu mạng có hồi tiếp (chứa các kết nối ngược trở về các nơron trước đó) mạng có thể chạy
không ổn định và dao động rất phức tạp. Mạng hồi tiếp rất được các nhà nghiên cứu quan tâm,
nhưng cấu trúc tiến đã chứng minh rất hiệu quả trong việc giải quyết các vấn đề thực tế.
Mạng nơron nhân tạo tiến cho như hình dưới. Các nơron được sắp xếp theo cấu trúc liên
kết lớp riêng biệt. Lớp ngõ vào không phải là nơron thực: các nơron này hoạt động đơn giản là giới
thiệu các giá trị của các biến vào. Các nơron lớp ẩn và lớp ngõ ra được kết nối với tất cả các nơron
lớp trước đó. Cũng như vậy chúng ta có thể định nghĩa mạng có các kết nối một phần với một vài
nơron trong lớp trước đó; tuy nhiên, trong hầu hết các ứng dụng mạng có kết nối đầy đủ vẫn tốt
hơn.
Cấu trúc mạng nơron nhân tạo
5
Nghiên cứu về mạng nơron.
Khi mạng hoạt động, các giá trị biến ngõ vào được đặt vào các nơron ngõ vào, và sau đó
các nơron lớp ẩn và lớp ngõ ra lần lượt được kích hoạt. Mỗi nơron tính giá trị kích hoạt của chúng
bằng cách lấy tổng các trọng số ngõ ra của các nơron lớp trước đó, và trừ cho ngưỡng. Giá trị kích
hoạt truyền qua hàm kích hoạt tạo ra giá trị ngõ ra của nơron. Khi toàn bộ mạng đã hoạt động, các
ngõ ra của lớp ngõ ra hoạt động như ngõ ra của toàn mạng.
4. Sử dụng mạng nơron nhân tạo
Một loạt vấn đề dẫn tới việc giải quyết bằng mạng nơron được định nghĩa bằng cách nó
làm việc hoặc nó được huấn luyện. Mạng nơron nhân tạo làm việc từ những ngõ vào khác nhau,
đưa ra những ngõ ra khác nhau. Do đó có thể sử dụng khi biết một vài thông tin và sẽ dự đoán
những thông tin chưa biết.
Ví dụ:
• Dự đoán thị trường chứng khoán: nếu biết giá cả chứng khoán của tuần trước và chỉ
số FTSE, ta sẽ dự đoán được giá cả chứng khoán ngày mai.
• Điều khiển: ta muốn biết có hay không một robot biết quẹo phải, trái hay chuyển
động về một phía để đạt được mục tiêu, ta sẽ biết được những gì robot đang quan
sát.
Điều kiện quan trọng trong việc sử dụng mạng nơron nhân tạo là phải biết mối liên hệ giữa
ngõ vào và ngõ ra biết trước. Mối quan hệ này có thể kéo theo nhiều thứ nhưng nó nhất định phải
May mắn thay có nhiều phương pháp lý tưởng cho vấn đề này, được xây dựng trên mạng nơron
nhân tạo. Dữ liệu số được chia nhỏ thành những khoảng thích hợp cho mạng và những giá trị thiếu
có thể được thay thế bằng giá trị trung bình hay giá trị thống kê của biến đó thông qua những biến
khác đã được huấn luyện.
Xử lý dữ liệu không phải là số thì khó hơn. Loại dữ liệu không phải là số thông thường
nhất là những biến có giá trị danh định như giới tính (nam, nữ). Biến có giá trị danh định có thể
biểu diễn bằng số học và mạng nơron nhân tạo có chức năng hỗ trợ điều này. Tuy nhiên mạng
nơron nhân tạo làm việc tốt với những trường hợp biến danh định là một tập nhiều giá trị.
Số trường hợp mẫu dùng để huấn luyện mạng rất khó xác định. Đã có một vài hướng dẫn
về mối liên hệ giữa số trường hợp mẫu với kích thước mạng (cách đơn giản nhất là số trường hợp
mẫu gấp 10 lần số kết nối trong mạng). Thực ra số trường hợp mẫu cũng liên quan đến độ phức tạp
của hàm mà mạng phải học. Khi số biến tăng lên, số trường hợp mẫu cần để huấn luyện cũng tăng
7
Nghiên cứu về mạng nơron.
phi tuyến, vì thế với một số nhỏ các biến (50 hoặc nhỏ hơn) thì lại cần một số lớn các trường hợp
mẫu.
Trong hầu hết các vấn đề trong thực tế, số trường hợp mẫu là khoảng hàng trăm hay hàng
ngàn mẫu. Đối với những vấn đề rất phức tạp thì cần nhiều hơn, nhưng trường hợp này rất ít. Nếu
dữ liệu huấn luyện ít hơn, rõ ràng không đủ thông tin để huấn luyện mạng, và cách tốt nhất là dùng
mạng tuyến tính.
Nhiều vấn đề trong thực tế có dữ liệu không đáng tin cậy, một vài dữ liệu bị phá hỏng do
nhiễu, hoặc các giá trị không phối hợp được với nhau. Mạng nơron nhân tạo có khả năng đặc biệt
xử lý dữ liệu bị mất (sử dụng giá trị trung bình hay những giá trị thống kê khác). Vì thế nếu dữ liệu
đưa vào ít, ta nên đưa vào những trường hợp giá trị bị mất (rõ ràng nếu không có thì không lý
tưởng). mạng nơron nhân tạo cũng chịu được nhiễu, nhưng cũng phải có giới hạn. Nếu thỉnh
thoảng có giá trị nằm xa ra khỏi vùng giá trị bình thường thì mạng huấn luyện phải có ngưỡng.
Cách tốt nhất đối với trường hợp này là nhận ra và loại bỏ những giá trị nằm xa đó (có thể hủy
trường hợp này hoặc xem giá trị nằm xa này là giá trị bị mất). Nếu giá trị xa này khó nhận ra,
mạng nơron nhân tạo có chức năng huấn luyện chịu được giá trị nằm khỏi vùng này nhưng cách
huấn luyện này thường kém hiệu quả hơn là huấn luyện chuẩn.
trị nhỏ nhất. Do đó chúng dễ dàng xác định giá trị cực tiểu. Chúng ta không thể xác định được vị trí
giá trị nhỏ nhất của mặt phẳng sai số, và vì thế huấn luyện mạng mạng nơron nhân tạo cần phải
phân tích tỉ mĩ mặt phẳng sai số. Từ cấu hình ngẫu nhiên các trọng số và ngưỡng ban đầu (nghĩa là
điểm ngẫu nhiên trên mặt phẳng sai số) các thuật toán huấn luyện tìm kiếm đến giá trị nhỏ nhất.
Thông thường, việc tìm kiếm dựa trên gradient (độ dốc) trên mặt phẳng sai số tại điểm hiện tại, và
sau đó sẽ di chuyển xuống giá trị nhỏ hơn. Do đó có nhiều khả năng thuật toán dừng ở điểm thấp là
điểm giá trị cực tiểu cục bộ (nhưng dù sao cũng hy vọng là giá trị nhỏ nhất).
6.2. Thuật toán backpropagation.
Các ví dụ phổ biến nhất về thuật toán huấn luyện mạng nơron nhân tạo là backpropagation.
Các thuật toán bậc hai hiện đại như conjugate gradient descent và Levenberg – Marquardt cơ bản
nhanh hơn trong nhiều vấn đề, nhưng backpropagation vẫn có một số ưu điểm trong một vài
trường hợp khác, và là thuật toán dễ hiểu nhất.
Trong backpropagation, vector gradient của mặt phẳng sai số được tính toán. Vector này
chỉ ra đường giảm dốc nhất và vị trí hiện tại, vì thế chúng ta biết rằng nếu chúng ta di chuyển dọc
9
Nghiên cứu về mạng nơron.
theo nó một “khoảng ngắn”, cuối cùng chúng ta sẽ đạt được giá trị nhỏ nhất. Khó khăn ở đây là
quyết định độ lớn của từng bước di chuyển.
Bước lớn có thể hội tụ nhanh hơn, nhưng có thể vượt quá điểm cần đến hay đi ra khỏi vùng
có cực tiểu (nếu mặt phẳng sai số bị lệch tâm). Ngược lại, bước quá nhỏ có thể đi đến đúng hướng
nhưng chúng ta cần phải thực hiện phép lặp nhiều lần. Trong thực tiễn, kích thước bước tỷ lệ với
độ dốc và hằng số đặc biệt: tốc độ học. Giá trị chính xác tốc độ học phụ thuộc vào từng ứng dụng
cụ thể, và thường được chọn qua thực tiễn.
Thuật toán thường có thêm khái niệm momentum. Momentum sẽ thúc đẩy di chuyển đi
theo theo một hướng xác định nếu sau khi qua nhiều bước đi cùng một hướng, thuật toán sẽ di
chuyển nhanh hơn, đưa đến khả năng thoát khỏi vùng giá trị cực tiểu cục bộ và cũng có thể di
chuyển nhanh chóng qua vùng bằng phẳng.
Thuật toán do đó xử lý lặp đi lặp lại, sau một số epoch. Ở mỗi epoch, các trường hợp huấn
luyện sẽ được đưa ra xem xét trong mạng, các ngõ ra thực và mong muốn được so sánh và tính
toán lỗi. Lỗi này kết hợp với gradent mặt phẳng sai số, sử dụng để điều chỉnh trọng số và sau đó
như luôn luôn có được sai số nhỏ hơn, nhưng điều này có thể là khít quá mức hơn là một mô hình
tốt.
Câu trả lời là sử dụng xác nhận mức giao. Vài mẫu huấn luyện được lưu lại và không thực
sự dùng cho huấn luyện trong thuật toán backpropagation. Để thay thế, những mẫu này được sử
dụng để kiểm tra độc lập trong quá trình của thuật toán. Như vậy hiệu suất ban đầu của mạng luôn
luôn bằng nhau ở những tập huấn luyện và xác minh lại. Trong quá trình huấn luyện, sai số huấn
luyện tự nhiên giảm xuống, và cho phép huấn luyện cực tiểu hóa hàm sai số thực, sai số xác minh
cũng giảm xuống. Tuy nhiên, nếu sai số xác minh không giảm, hay bắt đầu tăng lên, điều này có
nghĩa là mạng bắt đầu khít quá mức dữ liệu, và huấn luyện nên dừng lại (có thể cài đặt mạng
nơron nhân tạo tự động dừng lại khi bắt đầu học quá mức). Trường hợp khít quá mức xảy ra trong
quá trình xử lý huấn luyện gọi là học quá mức. Trong trường hợp này, chúng ta nên giảm số nơron
ẩn hay/và lớp ẩn vì mạng quá mạnh đối với vấn đề này. Ngược lại, nếu mạng không đủ mạnh để
mô phỏng hàm cơ sở, học quá mức không có khả năng xảy ra, cũng như sai số huấn luyện hay xác
minh lại không rơi vào mức bão hòa.
Những vấn đề liên quan đến cực tiểu cục bộ, và những quyết định sử dụng quá kích thước
của mạng, nghĩa là chúng ta phải chạy thử trên nhiều mạng khác nhau, có thể huấn luyện mỗi mạng
vài lần (để tránh rơi vào trường hợp cực tiểu cục bộ sai số) và quan sát hiệu suất từng mạng. Điều
quan trọng là quan sát sai số xác minh. Tuy nhiên, nên nhớ rằng nên mô phỏng mạng đơn giản hơn
là mạng phức tạp, chúng ta cũng thể chọn mạng nhỏ hơn là mạng lớn có khả năng cải thiện sai số
xác minh không đáng kể.
11
Nghiên cứu về mạng nơron.
Vấn đề đối với kỹ thuật này về việc thí nghiệm lặp đi lặp lại là tập xác minh không thực sự
đóng vai trò chọn lựa mạng, nghĩa là nó chỉ là một phần trong quá trình huấn luyện. Độ tin cậy của
nó chỉ ở mức độ vừa phải – khi số lần thí nghiệm đủ, chúng ta có khả năng rơi vào trường hợp
mạng thực hiện tốt trên tập xác minh. Để thêm độ tin cậy hiệu suất của mô hình cuối cùng thì trong
thực tế thường sử dụng thêm một tập thứ ba – là tập kiểm tra. Mô hình cuối cùng được kiểm tra với
tập dữ liệu kiểm tra để đảm bảo rằng kết quả của tập xác minh và huấn luyện là thật.
Tóm lại, việc thiết kế mạng (khi các biến ngõ vào đã được chọn) gồm các bước sau:
• Chọn cấu hình ban đầu (thường một lớp ẩn có số nơron ẩn bằng nửa tổng số nơron
Ngõ vào một nơron có thể là đại lượng vô hướng hoặc có hướng, đại lượng này được nhân
với trọng số tương ứng để đưa vào nơron, hoặc có thể cộng thêm ngưỡng (bias), thường bằng 1.
Dưới đây là mô hình một nơron với ngõ vào vô hướng p không có ngưỡng b (hình bên trái) và có
ngưỡng b (hình bên phải). Ngõ vào vô hướng p được nhân với trọng số vô hướng w tạo thành wp,
đối số wp (hình bên trái) qua hàm truyền f cho kết quả đầu ra là vô hướng a = f(wp). Hình bên
phải là nơron có ngưỡng b, giá trị b được cộng với wp rồi qua hàm truyền f cho kết quả đầu ra là
vô hướng a = f(wp+b). Có thể điều chỉnh những thông số của nơron như trọng số và ngưỡng (w và
b) để đạt được yêu cầu mong muốn nghĩa là “huấn luyện” mạng.
13
Nghiên cứu về mạng nơron.
Hàm truyền
Có rất nhiều hàm truyền áp dụng trong mạng nơron nhân tạo, trong đó ba hàm thường sử
dụng nhất là Hard Limit, Linear, Log-Sigmoid.
Tổng quát với một hàm truyền có đầu vào là một hoặc một nhóm vector thì đầu ra là
a = f ( p * w + b ).
Với a: đầu ra
p: đầu vào
w: trọng số
b: ngưỡng
f: hàm truyền
Vậy một ngõ vào với các hàm truyền khác nhau sẽ cho các kết quả khác nhau. Để có giải
pháp tối ưu thì cần phải có kinh nghiệm sử dụng các hàm truyền hoặc phải tốn một khoảng thời
gian để thử nghiệm hàm truyền.
Nơron với Vector nhập
Một nơron được cho trên hình vẽ sau với vector nhập p = [p
1
, p
2
, ……p
R
Trong hình dưới mô tả một lớp nơron với: R: số phần tử của vectơ đầu vào
S: số nơron trong lớp
a: vector ngõ ra của lớp nơron
Ma trận trọng số W:
=
RSSS
R
R
www
www
www
W
,2,1,
,22,11,2
,12,11,1
...
...
...
thuộc vào đầu vào và hàm truyền.
Nơron đơn rất ít sử dụng. Tuy nhiên một vài nơron có thể kết hợp thành một lớp hay nhiều
lớp thì khả năng xử lý cao hơn. Vấn đề đơn giản có thể trình bày bằng một lớp đơn. Tuy nhiên, nó
không giải quyết được nhiều vấn đề phức tạp. Mạng đa lớp feedforward có khả năng giải quyết
lớn hơn.
Cấu trúc một mạng có thể mô tả bằng số lớp, số nơron trong một lớp, hàm truyền của mỗi
lớp và kết nối giữa các lớp. Tùy thuộc vấn đề mạng cần giải quyết mà có cấu trúc khác nhau.
Nếu một ánh xạ tuyến tính cần mô tả nên sử dụng nơron tuyến tính. Tuy nhiên, mạng
tuyến tính không thể thực hiện bất cứ tính toán phi tuyến nào. Sử dụng hàm truyền phi tuyến để
tạo cho mạng có khả năng thực hiện mối quan hệ phi tuyến giữa đầu vào và đầu ra. Mạng có
ngưỡng b có thể mô tả mối quan hệ giữa đầu vào và đầu ra dễ dàng hơn mạng không có ngưỡng b.
Ví dụ một nơron không có ngưỡng sẽ luôn tạo ra ngõ vào zero cho hàm truyền (khi tất cả ngõ vào
nơron là zero). Tuy nhiên một nơron với ngưỡng có thể học để tạo ra một ngõ nhập cho bất kỳ
hàm truyền
17