MỤC LỤC
MỤC LỤC 1
CÁC HÌNH VẼ, BẢNG BIỂU TRONG LUẬN VĂN 3
THUẬT NGỮ TIẾNG ANH 3
Lời cảm ơn 4
Chương 1. Giới thiệu về mạng nơron nhân tạo 6
1.1 Cấu trúc và mô hình mạng nơron 8
1.1.1 Mô hình một nơron sinh học 8
1.1.2 Cấu trúc và mô hình của một nơron nhân tạo 9
1.2 Cấu tạo và phương thức làm việc của mạng nơron 12
1.2.1 Mạng nơron một lớp 14
1.2.2 Mạng nơron truyền thẳng nhiều lớp 15
1.2.3 Mạng nơron phản hồi 16
1.2.4 Mạng nơron hồi quy 16
1.2.5 Mạng Hopfield 16
1.2.6 Mạng BAM 18
1.3 Các luật học 19
1.3.1 Học có giám sát 20
1.3.2 Học củng cố 21
1.3.3 Học không có giám sát 21
1.4 Thuật toán lan truyền ngược 23
1.5 Kết luận 29
Chương 2. Tìm hiểu mạng nơron Kohonen 31
2.1 Giới thiệu 31
2.2 Mạng nơron Kohonen 32
2.2.1 Mạng nơron Kohonen nhận dạng 34
2.2.2 Cấu trúc của mạng nơron Kohonen 34
2.2.3 Chuẩn hóa dữ liệu đầu vào 35
2.2.4 Tính toán dữ liệu đầu ra của nơron 36
2.2.5 Ánh xạ lưỡng cực 36
2.2.6 Chọn nơron thắng 37
2.2.7 Quá trình học của mạng Kohonen 38
2.2.8 Tỉ lệ (tốc độ) học 39
2.2.9 Điều chỉnh các trọng số (cập nhật trọng số) 40
2.2.10 Tính toán sai số 40
2.3. Thực thi mạng nơron Kohonen 41
2.3.1 Thực thi mạng nơron truyền thẳng 41
2.3.2 Thực thi lan truyền ngược 46
2.3.3 Các tập huấn luyện 47
2.3.4 Báo cáo tiến trình 48
2.3.4.1 Lớp mạng cơ sở 48
2.3.4.2 Lớp KohonenNetwork 50
2.4 Kết luận 58
Chương 3. Nhận dạng ký tự quang sử dụng mạng nơron Kohonen 60
3.1 Giới thiệu chung 60
3.2 Huấn luyện mạng 61
3.3 Thử nghiệm sử dụng mạng nơron Kohonen để nhận dạng ký tự quang 62
3.4 Trường hợp ngoại lệ 65
3.5 Kết luận 65
KẾT LUẬN 67
Tài tham khảo 68
68 trang |
Chia sẻ: oanh_nt | Lượt xem: 3416 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Luận văn Tìm hiểu về mạng nơron Kohonen, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ở lớp ra thứ i (yi) cung ứng. Các hệ số là các trọng số được sử dụng cho lan truyền thẳng, nhưng ở đây chúng truyền các tín hiệu sai số () ngược trở lại, đó chính là các đường nét đứt trong hình (1.13). Điều này đã chứng tỏ được đặc điểm quan trọng của thuật toán lan truyền ngược – luật cập nhật cục bộ, đây chính là tính toán trọng số thay đổi dựa vào sự kết nối, và chúng ta chỉ cần giá trị ở hai đầu của kết nối này.
Sự đạo hàm ở trên có thể dễ dàng mở rộng cho mạng có nhiều hơn một lớp ẩn, bằng cách sử dụng chuỗi luật liên tiếp. Trong trường hợp chung, với số lớp tùy ý, thì sự lan truyền ngược được cập nhật luật ở dạng sau:
(1.31)
Ở đây, (output-i) và (input-j) quy vào hai đầu của sự kết nối từ phần tử thứ j tới phần tử thứ i, xj là đầu vào cuối cùng kích hoạt từ một phần tử lớp ẩn, hoặc từ một đầu vào bên ngoài. Ngoài ra, là tín hiệu học được định nghĩa bởi công thức (1.26) với đầu ra hoặc lớp cuối cùng của các trọng số kết nối, và được định nghĩa bởi công thức (1.30) cho tất cả các lớp khác. Khi hàm sigmoid lưỡng cực được sử dụng làm hàm kích hoạt, đồng thời sử dụng (1.26) và (1.30) ta có hàm y được xác định như sau:
Khi đó ta có:
(1.32)
(1.33)
Thuật toán lan truyền ngược
Xem xét một mạng với Q lớp lan truyền ngược, q=1,2,...,Q; với qneti và qyi lần lượt là đầu vào và đầu ra của khối trong lớp thứ q. Mạng có m nơron đầu vào, l nơron ở lớp ẩn, và n nơron đầu ra. Với qwij là trọng số nối từ q-1wj đến qyi.
Đầu vào: các cặp huấn luyện {x(k), d(k) | k=1,2,...,p}, ở đó giá trị đầu vào của phần tử cuối cùng bằng -1, tức là .
Bước 0 (Đặt giá trị ban đầu)
Lựa chọn bước tính (Hằng số học) 0<η<1 và Emax (sai số lớn nhất cho phép).
Chọn các trọng số ban đầu nối từ phần tử thứ j của lớp (q – 1) đến phần tử thứ i của lớp q là qwij có giá trị nhỏ và ngẫu nhiên.
Cho sai số E = 0 và k = 1.
Bước 1 (Vòng lặp huấn luyện)
Áp dụng mẫu vào thứ k, cho lớp đầu vào q=1. Khi đó ta có:
qyi = 1yi = xi(k) cho tất cả các i = 1,2,3,…,m. (1.34)
Bước 2 (Lan truyền thẳng)
Lan truyền tín hiệu thẳng xuyên suốt mạng sử dụng công thức (1.35) cho mỗi i và q cho tới khi các đầu ra của lớp đầu ra Qyi được thực hiện.
(1.35)
Bước 3 (Đo lường sai số đầu ra)
Tính toán giá trị sai lệch và tín hiệu sai lệch cho lớp đầu ra như sau:
; (1.36)
(1.37)
Trong đó: là tín hiệu sai lệch của nơron thứ i cho lớp ra Q; là đạo hàm của hàm truyền a(.) theo tổng trọng số của phần tử i của lớp đầu ra là .
Bước 4 (lan truyền ngược sai số)
Các sai số lan truyền ngược với mục đích để cập nhật các trọng số và tính toán các tín hiệu sai lệch cho các lớp xử lý:
; (1.38)
; với q=Q,Q-1,...,2 (1.39)
Trong đó:
là sai lệch tại thời điểm tính của giá trị trọng số liên kết cập nhật mới và cũ, liên kết từ phần tử thứ j của lớp q-1 đến phần tử i của lớp q.
là giá trị trọng số liên kết cập nhật mới từ phần tử thứ j của lớp (q-1) đến phần tử i của lớp q.
là giá trị trọng số liên kết cũ từ phần tử thứ j của lớp (q-1) đến phần tử i của lớp q.
là tín hiệu ra của phần tử j của lớp (q-1).
Bước 5 (Sau mỗi vòng lặp)
Kiểm tra xem đã lặp hết các giá trị mẫu huấn luyện chưa, nếu chưa quay vòng hết (tức là k<p) tăng k=k+1, và nhảy tới bước 1, ngược lại (tức k=p) thì chuyển sang bước 6.
Bước 6 (Kiểm tra tổng sai số)
Kiểm tra sự khác nhau giữa tổng sai số và sai số cho phép:
Nếu tổng sai số nhỏ hơn sai số cho phép (tức là E<Emax) thì kết thúc quá trình huấn luyện, và ghi lại các giá trị trọng số cuối cùng.
Trái lại, thì lại gán E=0, k=1 và bắt đầu một quá trình huấn luyện mới bằng cách nhảy tới bước 1.
1.5 Kết luận
Trong chương này, chúng ta tìm hiểu một mạng nơron và thuật toán lan truyền ngược. Quá trình học của mạng truyền thẳng chỉ ra một phương thức để mạng nơron nhận dạng một mẫu, nó giống như quá trình học của lan truyền ngược, đó là mô tả một quá trình mạng nơron sẽ được huấn luyện.
Một mạng nơron truyền thẳng là một mạng mà ở đó các nơron chỉ được kết nối tới một lớp tiếp theo. Không có kết nối giữa các nơron với các lớp trước hoặc với chính nơron đó. Thêm vào đó, các nơron sẽ không kết nối tới các nơron quá xa ở lớp tiếp theo. Một mẫu được xử lý bởi sự truyền thẳng, độ lệch và các trọng số kết nối sẽ được áp dụng.
Các mạng nơron được huấn luyện bằng cách sử dụng thuật toán lan truyền ngược. Thuật toán lan truyền ngược là một dạng huấn luyện có giám sát. Mạng nơron được đưa vào dữ liệu huấn luyện cho cho ra kết quả, các kết quả này được so sánh với các kết quả được mong đợi. Sự khác nhau giữa các kết quả thực tế và các kết quả mong đợi sẽ có một mức sai số nào đó. Để giảm thiểu sai số này, người ta tiến hành sử dụng thuật toán lan truyền ngược để điều chỉnh các trọng số và độ lệch của mạng. Đây là cách mà sai số được giảm đáng kể. Trong chương tiếp theo, chúng ta sẽ tìm hiều về mạng nơron Kohonen. Sự khác nhau quan trọng nhất giữa mạng nơron Kohonen và mạng nơron lan truyền ngược là phương thức huấn luyện. Phương thức lan truyền ngược sử dụng phương thức huấn luyện có giám sát. Còn mạng nơron Kohonen sử dụng phương thức huấn luyện không giám sát.
Chương 2. Tìm hiểu mạng nơron Kohonen
2.1 Giới thiệu
Trong các kiểu khác nhau của mạng nơron, mạng nơron Kohonen giống với mạng nơron sinh học hơn cả về cấu tạo lẫn cơ chế học. Mạng nơron nhân tạo này lần đầu tiên được giới thiệu bởi Kohonen vào năm 1982, nó được biết đến như là ánh xạ đặc trưng tự tổ chức (SOM). Ánh xạ tự tổ chức của Kohonen còn được biết đến là một trong những mô hình khá đơn giản của mạng nơron, và người ta thường gọi đó là mạng nơron Kohonen.
Mạng nơron Kohonen (hay nơron tự tổ chức) mô hình hóa cách hoạt động bộ não của con người, mặc dù nó khá đơn giản. Chúng ta có thể nhận được một số ý tưởng cách bộ não lưu trữ hình ảnh và cách nó nhận dạng các hình ảnh.
Cách xử lý thông tin các mạng nơron khác thường chỉ quan tâm đến giá trị và dấu hiệu của thông tin đầu vào, chưa quan tâm khai thác các mối liên hệ có tính chất cấu trúc trong lân cận của các vùng dữ liệu mẫu, hay toàn thể không gian. Nhưng trong mạng nơron Kohonen đã quan tâm đến các yếu tố này.
Tự tổ chức trong mạng nơron là một trong những chủ đề cuốn hút trong mạng nơron. Một mạng nơron như vậy có thể được luyện để tìm ra các quy luật và các tương quan, các giá trị nhập vào và dự đoán các kết quả tiếp theo. Các nơron của mạng thông qua quá trình luyện cạnh tranh để nhận ra một nhóm các đối tượng đầu vào tương đương nhau. Mục đích chính của việc luyện trong mạng nơron Kohonen là nhận dạng một nhóm các vector đầu vào cùng loại.
Trong phần tiếp theo, chúng ta có thể chỉ ra hình ảnh được lưu trữ và nhận dạng với mạng nơron Kohonen. Việc thi hành mạng nơron Kohonen có thể được thay thế bởi một thuật toán tương ứng mà dễ dàng thi hành, và luôn luôn được sử dụng trong các ứng dụng của mạng nơron Kohonen. Chúng ta gọi thuật toán đó là thuật toán mạng nơron tự tổ chức (Kohonen, 1988) hay ánh xạ tự tổ chức SOM. Ý tưởng đáng chú ý của thuật toán này là ánh xạ các đặc trưng topo tự tổ chức nhằm bảo toàn trật tự sắp xếp các mẫu trong không gian biểu diễn nhiều chiều sang một không gian mới với các mảng nơron có số chiều nhỏ hơn, thường là hai chiều. Đây là một phép chiếu phi tuyến đem lại một “ánh xạ đặc trưng” hai chiều, nó có thể được sử dụng trong việc phát hiện và phân tích những đặc trưng trong không gian đầu vào. Ta hiểu điều này như là bảo toàn cấu trúc các đặc trưng. Trong mạng nơron Kohonen, các vector tín hiệu đầu vào gần nhau sẽ được ánh xạ sang các nơron lân cận trong mạng.
Kỹ thuật SOM đã được áp dụng thành công trong một số lĩnh vực như nhận dạng, phân cụm dữ liệu, dự đoán chuỗi và khai phá dữ liệu,... Mẫu được nhận dạng có thể là ảnh, âm thanh hoặc văn bản,... Có thể xem SOM là một lớp điển hình, nhưng rất đơn giản của các mạng nơron Kohonen.
2.2 Mạng nơron Kohonen
Mạng luyện không không có thầy hướng dẫn, là một kiểu luyện mà ở đó các nơron tự xoay xở với các dữ liệu mẫu mà nó có được chứ không có “Ông thầy” gợi ý cần luyện theo hướng nào.
Tự mình khám phá những quan hệ đang được quan tâm, ví dụ về các dạng ( patterns), các đặc trưng (features ) từ dữ liệu vào (input data) sau đó chuyển thành cái ra (outputs). Như vậy thực chất : đó là các mạng tự tổ chức (hay mạng nơron Kohonen) .
Định nghĩa: Mạng noron Kohonen là mạng có khả năng sử dụng những kinh nghiệm của quá khứ để thích ứng với những biến đổi của môi trường (không dự báo trước). Loại mạng này thuộc nhóm hệ học, thích nghi không cần có tín hiệu chỉ đạo từ bên ngoài.
Trong phần này chúng ta sẽ trình bày một số quy trình luyện tham số của luyện không có thày như sau:
Mô hình
Mạng có n nơron PEi , i=1,2,..., n.
Cái ra của chúng là , i=1,...,n.
Có m tín hiệu vào {x1, x2,..., xm},wij là trọng số liên kết từ xj với PEi .
Gọi s(x), s(y) là hàm chuyển tín hiệu, giả thiết đó là hàm đơn điệu không giảm liên tục như dạng hàm Sigmoid.
Phương thức biến đổi trọng số được gọi là luật luyện Hebb, quy tắc luyện đơn giản theo dạng Hebb cho bởi phương trình :
(2.40)
Bây giờ ta xét một số trường hợp riêng:
- Quy tắc luyện cạnh tranh (Competitive Learning Rule – Grossberg 1969, Rumelhart 1986)
(2.41)
ở đây (2.42)
- Nếu dùng ta thu được :
Quy tắc luyện cạnh tranh tuyến tính (the Linear competitive learning rule)
(2.43)
Trường hợp riêng quan trọng là quy tắc “ thắng lấy tất cả - the winner-take-all learning rule “ của Kohonen , giải thích để hiểu qua bài toán phân cụm tập mẫu thành n cụm , với n đã cho.
Kí hiệu , α là hệ số học.
Tại mỗi vòng lặp k, quy tắc luyện gồm 2 bước :
1/ Bước tìm cái khớp nhất (matching) – tìm nơron tạm gọi là nơron thắng (theo nghĩa gần mẫu nhất), sử dụng công thức sau:
, (2.44) (Phương pháp tính tích vô hướng).
2/ Tính toán sai số và điều chỉnh trọng số
Ký hiệu ej là sai số ở cột thứ j, wij là biểu diễn cho cột thứ j của ma trận trọng số w, sai số này được tính theo công thức sau:
ej = ||x-wij|| (2.45)
Nếu tổng sai số chưa nằm dưới mức cho phép, ta điều chỉnh trọng số theo công thức:
với k =1,…,m (2.46)
Khi một mẫu được đưa tới một mạng Kohonen, những nơron được chọn là nơron thắng (winner) (nơron thích hợp nhất theo nghĩa mà ta đặt ra). Nơron thắng này là dữ liệu đầu ra từ mạng Kohonen. Thông thường, các nơron thắng này tương ứng với các nhóm trong dữ liệu đưa vào mạng Kohonen.
Mạng Kohonen được huấn luyện trong một chế độ không có giám sát. Sử dụng mạng Kohonen này, dữ liệu có thể được phân loại thành từng cụm. Chúng ta sẽ xem xét mạng Kohonen qua quá trình huấn luyện.
2.2.1 Mạng nơron Kohonen nhận dạng
Ta sẽ xem việc huấn luyện mạng nơron Kohonen như thế nào để nhận dạng đúng các mẫu mà ta mong muốn. Chúng ta bắt đầu bằng cách xem xét cấu trúc của mạng nơron Kohonen.
2.2.2 Cấu trúc của mạng nơron Kohonen
Mạng nơron Kohonen chỉ bao gồm một lớp dữ liệu đầu vào và một lớp dữ liệu đầu ra của các nơron và nó không chứa lớp ẩn.
Lớp dữ liệu đầu vào đối với mạng nơron Kohonen là các nơron đầu vào. Các nơron đầu vào này tạo thành mẫu dữ liệu đầu vào của mạng. Đối với mạng nơron Kohonen, ta nên chọn dữ liệu đầu vào chuẩn hóa trong khoảng giữa -1 và 1. Khi thực thi mẫu dữ liệu đầu vào, mạng sẽ tạo ra các nơron đầu ra.
Lớp đầu ra của mạng nơron Kohonen rất khác với lớp đầu ra của mạng nơron truyền thẳng. Đối với mạng truyền thẳng, nếu chúng ta có một mạng nơron với 5 nơron đầu ra, chúng sẽ có thể cho kết quả bao gồm 5 giá trị. Còn trong mạng nơron Kohonen chỉ có một nơron đầu ra cho ra một giá trị. Giá trị duy nhất này có thể là đúng hoặc sai. Dữ liệu đầu ra từ mạng nơron Kohonen thường là các chỉ số của nơron (Ví dụ nơron số 5,…). Cấu trúc đặc trưng của mạng nơron Kohonen được chỉ ra trong hình 2.1.
Hình 2.1: Một dạng mạng nơron Kohonen
Bây giờ, chúng ta xem xét mạng nơron Kohonen xử lý thông tin như thế nào. Để kiểm tra quá trình này, chúng ta xem xét một ví dụ sau:
Ví dụ
Chúng ta sẽ xém xét một mạng nơron Kohonen đơn giản. Mạng này sẽ chỉ có 2 nơron đầu vào, và 2 nơron đầu ra. Dữ liệu đầu vào được cho là 2 nơron được chỉ ra trong bảng 2.1 và các trọng số kết nối giữa các nơron trong bảng 2.2.
Bảng 2.1 Bảng 2.2
Sử dụng các giá trị này, chúng ta xem xét nơron có thể thắng và cung cấp dữ liệu đầu ra. Chúng ta bắt đầu bằng cách chuẩn hóa dữ liệu đầu vào.
2.2.3 Chuẩn hóa dữ liệu đầu vào
Mạng nơron Kohonen đòi hỏi dữ liệu đầu vào phải được chuẩn hóa. Yêu cầu của mạng nơron Kohonen là dữ liệu đầu vào của nó phải được phân hoạch trên miền xác định giữa -1 và 1. Mỗi dữ liệu đầu vào nên sử dụng hoàn toàn miền xác định, vì nếu các nơron đầu vào chỉ sử dụng các số giữa 0 và 1, thì thành quả của mạng nơron sẽ không cao (bị tổn thất).
Để chuẩn hóa dữ liệu đầu vào, chúng ta sẽ tính toán độ dài vector (vector length) của các dữ liệu đầu vào, hoặc vector đầu vào. Trong trường hợp này độ dài vector sẽ là: (0.5 * 0.5) + (0.75 * 0.75) = 0.8125.
Vậy trường hợp trên sẽ có độ dài vector là 0.8125. Sử dụng độ dài này, chúng ta có thể xác định được hệ số chuẩn hóa. Hệ số chuẩn hóa là số nghịch đảo của căn bậc hai độ dài vector đầu vào. Trong trường hợp trên thì hệ số chuẩn hóa là:
Tính toán giá trị trên cho kết quả hệ số chuẩn hóa là 1.1094. Hệ số chuẩn hóa này sẽ sử dụng cho bước tiếp theo, đó là tính toán đầu ra cho nơron.
2.2.4 Tính toán dữ liệu đầu ra của nơron
Để tính toán dữ liệu đầu ra, vector dữ liệu đầu vào và các trọng số kế nối nơron đều phải được xem xét. Thứ nhất, tính tích vô hướng của hai vector vector đầu vào và vector các trọng số liên kết. Để tính toán tích vô hướng giữa hai vector này, ta thực hiện như sau.
Ta bắt đầu tính toán cho nơron thức nhất. Thuật toán Kohonen cho việc lấy tích vô hướng hai vector của vector đầu vào và vector trọng số được tính như sau:
Phép tính toán trên "dot product" cho kết quả là 0.395. Tính toán này sẽ được thực hiện cho nơron đầu ra đầu tiên, và nó sẽ được thực hiện như vậy đối với mỗi nơron đầu ra tiếp theo.
Bây giờ, dữ liệu đầu ra này phải được chuẩn hóa bằng nhân kết quả của "dot product" trên (0.395) với hệ số chuẩn hóa là 1.1094, và cho kết quả là 0.438213. Dữ liệu đầu ra đã được tính toán và chuẩn hóa, nó được ánh xạ tới một số lưỡng cực?.
2.2.5 Ánh xạ lưỡng cực
Khi tạo bản đồ lưỡng cực, số 0 sẽ là -1, và các số còn lại là 1. Tức là tạo bản đồ lưỡng cực từ [-1,1] tới [0,1].
Ví dụ, để biến đổi chuỗi 0101 về số lưỡng cực ta làm như sau:
Do dữ liệu đầu vào được chuẩn hóa trong khoảng [-1,1] nên ta phải thực hiện chuẩn hóa tương tự đối với nơron đầu ra. Để lập được bản đồ, ta cộng thêm 1 vào kết quả rồi lấy ½ kết quả đó. Theo kết quả trên có kết quả đầu ra là 0.438213, và kết quả trong dữ liệu đầu ra cuối cùng là :
(0.438213+1)/2 = 0.7191065.
Giá trị 0.7191065 là dữ liệu đầu ra của nơron đầu tiên. Giá trị này sẽ được so sánh với các dữ liệu đầu ra của nơron khác. Bằng cách so sánh các giá trị này, chúng ta có thể xác định được nơron “ thắng”.
2.2.6 Chọn nơron thắng
Nếu chúng ta muốn xác định được một nơron đầu ra thắng, chúng ta phải tính toán giá trị cho nơron đầu ra thứ hai. Bây giờ, chúng ta sẽ xem nhanh quá trình tính toán cho nơron đầu ra thứ hai.
Nơron dữ liệu đầu ra thứ hai sẽ sử dụng hệ số chuẩn hóa giống như đã sử dụng để tính toán cho nơron đầu ra đầu tiên. Theo trên ta có hệ số chuẩn hóa là 1.1094. Chúng ta áp dụng phương pháp tính tích vô hướng cho trọng số của nơron đầu ra thứ hai và vector dữ liệu đầu vào, chúng ta sẽ nhận được một giá trị là :
|0.5 0.75|*|0.3 0.4| = (0.5*0.75)+(0.3*0.4) = 0.45.
Giá trị này được nhân với hệ số chuẩn hóa 1.1094, chúng ta nhận được kết quả là 0.49923.
Bây giờ chúng ta đã có giá trị đầu ra cho mỗi nơron. Nơron đầu tiên có giá trị đầu ra là 0.7191065 và nơron thứ hai có một giá trị đầu ra là 0.49923. Để chọn nơron thắng, chúng ta chọn giá trị của dữ liệu đầu ra là lớn nhất. Trong trường hợp này thì nơron thắng là nơron đầu ra đầu tiên với giá trị đầu ra là 0.7191065.
Như vậy ta đã xác định được giá trị đầu ra của mạng nơron Kohonen. Ta thấy các trọng số giữa nơron đầu vào và nơron đầu ra xác định dữ liệu đầu ra. Trong phần sau, chúng ta sẽ điều chỉnh các trọng số này để nó cung cấp dữ liệu đầu ra phù hợp với cái mà ta mong muốn.
2.2.7 Quá trình học của mạng Kohonen
Toàn bộ quá trình huấn luyện cho một mạng nơron Kohonen cần phải lặp lại qua vài công đoạn. Nếu sai số đã tính toán của mạng nơron Kohonen ở mức thấp hơn mức có thể chấp nhận được thì sẽ hoàn tất quá trình huấn luyện. Để tính toán tỉ lệ sai số cho mạng nơron Kohonen, ta sẽ điều chỉnh các trọng số cho mỗi công đoạn.
Quá trình huấn luyện cho mạng nơron Kohonen là luyện cạnh tranh nên mỗi tập huấn luyện sẽ có một nơron thắng. Nơron thắng này sẽ có trọng số được điều chỉnh sao cho ngay lập tức nó sẽ tác động trở lại mạnh mẽ hơn trong dữ liệu đầu vào ở lần tiếp theo. Sự khác nhau giữa các nơron thắng sẽ dẫn tới sự khác nhau giữa các mẫu đầu vào tiếp theo.
Chúng ta xem xét toàn bộ quá trình liên quan đến việc huấn luyện mạng nơron Kohonen. Các bước được tóm tắt trong hình 2.2.
Từ hình 2.2 ta thấy, mạng nơron Kohonen được huấn luyện bởi các công đoạn tuần hoàn cho đến khi một trong hai vấn đề sau xảy ra:
Nếu tính toán các sai số ở mức thấp hơn mức có thể chấp nhận được thì nhiệm vụ của chu kỳ sẽ hoàn thành quá trình huấn luyện.
Nếu tất cả các tỉ lệ sai số chỉ thay đổi bởi đa số cận biên, thì chu kỳ riêng lẻ này sẽ bị loại bỏm và các trọng số lại được khởi tạo lại với các giá trị ngẫu nhiên, đông thời một chu kỳ huấn luyện mới lại bắt đầu. Chu kỳ huấn luyện này sẽ tiếp tục chu kỳ huấn luyện trước và nó sẽ phân tích các công đoạn để đưa ra kết quả; hoặc là chu kỳ bị loại bỏ hoặc tạo ra một tập các trọng số đó mà có mức sai số có thể chấp nhận được.
Dừng
Bắt đầu
Khởi tạo ngẫu nhiên ma trận trọng số
Tính toán sai số
Kiểm tra sai số xem có ở mức chấp nhận được không?
Thực hiện huấn luyện, điều chỉnh trọng số dựa vào nơron thắng
Tính toán lại tỉ lệ sai số, ghi lại những giá trị đã được cải thiện
Cải thiện tỉ lệ sai số là tầm thường?
Ma trận trọng số này đã tốt nhất chưa?
Nếu có ma trận trọng số tốt hơn của ma trận trọng số tốt nhất?
Gán ma trận trọng số này thành ma trận trọng số tốt nhất
Đã quá số chu kỳ xác định?
Yes
No
Yes
Yes
No
No
No
No
Yes
Yes
Hình 2.2: Sơ đồ khối biểu diễn huấn luyện mạng nơron Kohonen.
2.2.8 Tỉ lệ (tốc độ) học
Tham số học là một hằng và nó là một số nhỏ hơn 1, ở trên ký hiệu là α.
Thông thường, ta đặt cho tham số học một giá trị từ 0.4 đến 0.5, nếu tỉ lệ học lớn thì quá trình huấn luyện nhanh hơn. Tuy nhiên, việc đặt cho tỉ lệ học một giá trị quá lớn có thể sẽ làm cho mạng không bao giờ hội tụ. Điều này làm thay đổi các vector trọng số sẽ quá lớn gây ảnh hưởng tới việc phân loại các mẫu nên ta chỉ cần chọn tỉ lệ học vừa đủ, và sử dụng nó để điều chỉnh các trọng số của các nơron. Trong phần tiếp theo, chúng ta sẽ xem các trọng số này được điều chỉnh sử dụng tham số học như thế nào.
2.2.9 Điều chỉnh các trọng số (cập nhật trọng số)
Một công đoạn xuất hiện khi dữ liệu huấn luyện được đưa vào mạng nơron Kohonen, và các trọng số được điều chỉnh dựa trên các kết quả của dữ liệu huấn luyện. Sự điều chỉnh các trọng số sẽ làm cho mạng có thuận lợi hơn ngay sau khi nó được đưa trở lại mạng. Ma trận trọng số cuối cùng được sử dụng sẽ là ma trận tốt nhất được xác định từ mỗi chu kỳ. Bây giờ, chúng ta sẽ xem xét các trọng số này được thay đổi như thế nào.
Phương pháp cho việc tính toán thay đổi các trọng số sử dụng phương trình sau:
(2.48)
Biến x là vector huấn luyện được đưa vào mạng. Biến wt là trọng số của nơron thắng, và biến wt+1 là trọng số mới, α là hệ số học.
2.2.10 Tính toán sai số
Khi mạng huấn luyện không giám sát bao giờ cũng có sai số, đó là sự khác nhau giữa kết quả mong đợi và kết quả thực tế của mạng nơron. Sai số mà chúng ta tính toán là những cái mà không đúng giữa kết quả mong đợi và kết quả thực tế.
ej = ||x-wj||
Mục đích của mạng nơron Kohonen là phân loại dữ liệu đầu vào vào trong các tập khác nhau, cho nên sai số của mạng nơron Kohonen phải được đo lường. Sai số này sẽ được tính toán trong quá trình huấn luyện mạng.
2.3. Thực thi mạng nơron Kohonen
Có vài lớp có thể được sử dụng cùng nhau để tạo ra một mạng nơron Kohonen. Chương sau ta sẽ chỉ ra cách để xây dựng một ứng dụng dựa trên mạng nơron Kohonen, đó là ứng dụng nhận dạng ký tự quang (cụ thể là nhận dạng chữ viết tay). Các lớp được mô tả như sau:
· KohonenNetwork – Thực thi các phương thức thuộc về mạng nơron Kohonen. Đây là nơi mà mạng nơron Kohonen được huấn luyện và lấy các mẫu.
· Network – Chứa đựng các phương pháp không thuộc về mạng nơron Kohonen. Các lớp này chứa các phương pháp để tính toán tích vô hướng, và chiều dài vector.
· NeuralReportable – Một giao diện đơn giản cho phép mạng nơron Kohonen trả về thông tin tiến bộ sau khi mạng nơron được huấn luyện.
· TrainingSet – Một tập huấn luyện chứa đối tượng, đó là có thể chứa các mảng của các lần huấn luyện riêng lẻ. Tập huấn luyện có thể chứa cả các phần tử dữ liệu đầu vào và dữ liệu đầu ra.
Các lớp này hoạt động cùng nhau để cung cấp các chức năng cho mạng Kohonen. Trước tiên, ta xem việc thực thi mạng nơron truyền thẳng xem chúng hoạt động như thế nào.
2.3.1 Thực thi mạng nơron truyền thẳng
Khi thực thi mạng nơron truyền thẳng, dữ liệu được truyền đến đối tượng “synapse”. Phương thức run chạy một vòng lặp luôn luôn đợi mẫu dữ liệu mới và sau đó chuyển chúng thành dữ liệu đầu ra, danh sách 2.1 chỉ ra phương thức run hoạt động để nhớ mẫu của lớp Layer.
Danh sách 2.1: Phương thức Layer.run
public void run() {
while ( running ) {
int dimI = getRows();
int dimO = getDimension();
// Nhớ mẫu
inps = new double[dimI];
this.fireFwdGet();
if ( m_pattern != null ) {
forward(inps);
m_pattern.setArray(outs);
fireFwdPut(m_pattern);
}
if ( step != -1 )
// Kiểm tra nếu bước tiếp theo đang được học
m_learning = monitor.isLearningCicle(step);
else
// Dừng mạng
running = false;
//Nếu ((m_learning) && (m_batch != 1))
if ( (m_learning) && (running) )
{ // Học
gradientInps = new double[dimO];
fireRevGet();
backward(gradientInps);
m_pattern = new Pattern(gradientOuts);
m_pattern.setCount(step);
fireRevPut(m_pattern);
}
} // Kết thúc while (running = false)
myThread = null;
}
Phương thức fireFwdPut được gọi để truyền mẫu vào trong “synapse” đầu ra.
forward(inps);
m_pattern.setArray(outs);
fireFwdPut(m_pattern);
Khi các phương thức “forward” và “fireFwdPut” được gọi, có ba biến liên quan đó là:
· Các trọng số kết nối
· Độ lệch trọng số
· Hàm ngưỡng
Phương thức đầu tiên được gọi là phương thức fireFwdGet. Công việc chính của phương thức này là nhận mẫu từ “synapse” đầu vào, và đợi cho đến khi không có mẫu nào được đưa vào.
Lớp dữ liệu đầu vào chỉ nhận các giá trị {0,1} của mẫu để nhớ. Sau đó, lớp đầu vào sẽ áp dụng hàm ngưỡng, đưa chúng đến lớp tiếp theo. Chúng ta sử dụng kiểu hàm sigmoid trong lớp dữ liệu đầu vào, thực thi hàm sigmoid qua lớp SigmoidLayer. Danh sách 2.2 chỉ ra phương thức SigmoidLayer.forward().
Danh sách 2.2: Phương thức SigmoidLayer.forward
public void forward(double[] pattern)
{
int x;
double in;
int n = getRows();
try {
for ( x = 0; x < n; ++x ) {
in = pattern[x] + bias.value[x][0];
outs[x] = 1 / (1 + Math.exp(-in));
}
} catch ( Exception aioobe ) {
aioobe.printStackTrace();
}
}
Từ danh sách 2.2 ta thấy, phương thức SigmoidLayer.layer() áp dụng hàm sigmoid cho mỗi nơron trong lớp này. Hàm sigmoid đã được đề cập ở trên.
Phương thức Layer.run đã xử lý dữ liệu đầu vào bằng cách sử dụng hàm ngưỡng sigmoid, lớp này sẵn sàng đưa mẫu tới lớp kế tiếp. Khi mẫu được đưa vào lớp tiếp theo, thì các trọng số thích hợp được cập nhật.
Bây giờ, phương thức Layer.run áp dụng hàm ngưỡng cho mỗi giá trị nơron, lớp phải truyền mẫu lên trên synapse. Synapse này áp các trọng số kết nối và gửi mẫu tới lớp tiếp theo, chúng được thể hiện ở phương thức fireFwdPut(). Phương thức fireFwdPut được chỉ ra trong danh sách 2.3.
Danh sách 2.3: Phương thức Layer.fireFwdPut
protected void fireFwdPut(Pattern pattern) {
if ( aOutputPatternListener == null ) {
return;
};
int currentSize = aOutputPatternListener.size();
OutputPatternListener tempListener = null;
for ( int index = 0; index < currentSize; index++ ){
tempListener =
(OutputPatternListener)aOutputPatternListener.elementAt(index);
if ( tempListener != null ) {
tempListener.fwdPut((Pattern)pattern.clone());
};
};
}
Phương thức Layer.fireFwdPut chịu hai trách nhiệm. Thứ nhất, nó áp các trọng số kết nối giữa các nơron ở lớp hiện thời cho các nơron ở lớp tiếp theo. Thứ hai, nó chuyển mẫu này đến synapse. Phương thức này chuyển mẫu đến synapse bằng cách gọi phương thức Synapse.fireFwdPut. Phương thức Synapse.fireFwdPut được chỉ ra trong danh sách 2.4.
Danh sách 2.4: Phương thức Synapse.fireFwdPut
public synchronized void fwdPut(Pattern pattern) {
if ( isEnabled() ) {
count = pattern.getCount();
while ( items > 0 ) {
try {
wait();
} catch ( InterruptedException e ) {
//e.printStackTrace();
return;
}
}
m_pattern = pattern;
inps = (double[])pattern.getArray();
Các file đính kèm theo tài liệu này:
- Tìm hiểu về mạng nơron Kohonen.doc