Mạng nơron nhân tạo, Artificaial Neural Network (ANN) gọi tắt là mạng nơron (neural network), là mô hình xử lý thông tin phỏng theo cách thức xử lý thông tin của các hệ nơron sinh học. Nó được tạo nên từ một số lượng lớn các phần tử (gọi là phần tử xử lý hay nơron) kết nối với nhau thông qua các liên kết (gọi là trọng số liên kết) làm việc như một thể thông nhất để giải quyết một vấn đề cụ thể nào đó.
Trang 1Mục lục
1 TỔNG QUAN VỀ MẠNG NƠRON 4
1.1 Mạng nơron là gì 4
1.2 ứng dụng trong lĩnh vực gì 4
2 CẤU TRÚC CỦA MỘT NƠRON 4
3 HỌC CÓ GIÁM SÁT VÀ HỌC KHÔNG CÓ GIÁM SÁT 5
3.1 Mạng nơron học có giám sát: 5
3.2 Trong phương pháp học không có giám sát: 6
4 GIẢI THUẬT LAN TRUYỀN NGƯỢC 6
5 LEARNING RATE 7
6 HÀM ACTIVE 7
6.1 Mô hình hàm : y = 1 / (1 + Exp(-x)) 8
6.2 Mô hình hàm : y = x 8
6.3 Hình 7.3: Mô hình hàm y = Log(1 + |x|) 8
6.4 Hình 7 4: Mô hình hàm y = sin(x) 9
6.5 Hình 7.5: Mô hình hàm y=Tan(x) 9
7 BẢN ĐỒ TỔ CHỨC KOHONEN SOM (KOHONEN SELF -ORGANIZING MAPS) .9 8 HÀM NEIGHBORHOOD 11
8.1 Tổng quan 11
8.2 Hình minh họa 11
9 LƯỚI TOPOLOGY 12
Trang 211 THIẾT KẾ MẠNG NƠRON 13
11.1 Số lượng lớp ẩn (trong mạng Backpropagation) 13
11.2 Mạng neurol ban đầu 14
11.3 Số mẫu huấn luyện 14
12 CÁC LĨNH VỰC ỨNG DỤNG MẠNG NƠRON 14
12.1 Giải quyết các bài toán 14
12.2 Phạm vi ứng dụng 14
13 CÀI ĐẶT MÔI TRƯỜNG PHÁT TRIỂN 15
13.1 Ngôn ngữ lập trình 15
13.2 Công cụ phát triển 15
14 NEURONNETWORK CLASS 15
14.1 Neuron.Core namespace 15
14.2 NeuronNetwork.Core.Initializers namespace 16
14.3 NeuronNetwork.Core.LearningRateFunctions namespace 16
14.4 NeuronNetwork.Core.BackPropagation namespace 16
14.5 NeuronNetwork.Core.SOM namespace 16
14.6 NeuronNetwork.Core.SOM.NeighborhoodFunctions namespace 17
15 MỘT VÀI ĐOẠN CODE HỮU DỤNG 17
15.1 backpropagation network 17
15.2 Đoạn mã khởi tạo một Kohonen SOM 17
16 CHƯƠNG TRÌNH ỨNG DỤNG MẠNG NEURON 18
16.1 Nhận dạng ký tự bàng cách vẽ chữ 18
17 THIẾT KẾ MẠNG NƠRON 20
17.1 Số lượng lớp ẩn (trong mạng Backpropagation) 20
17.2 Mạng neurol ban đầu 20
17.3 Số mẫu huấn luyện 20
18 CÁC LĨNH VỰC ỨNG DỤNG MẠNG NƠRON 21
18.1 Giải quyết các bài toán 21
18.2 Phạm vi ứng dụng 21
Trang 319 CÀI ĐẶT MÔI TRƯỜNG PHÁT TRIỂN 21
19.1 Ngôn ngữ lập trình 21
19.2 Công cụ phát triển 21
20 NEURONNETWORK CLASS 21
20.1 Neuron.Core namespace 22
20.2 NeuronNetwork.Core.Initializers namespace 22
20.3 NeuronNetwork.Core.LearningRateFunctions namespace 22
20.4 NeuronNetwork.Core.BackPropagation namespace 23
20.5 NeuronNetwork.Core.SOM namespace 23
20.6 NeuronNetwork.Core.SOM.NeighborhoodFunctions namespace 23
21 MỘT VÀI ĐOẠN CODE HỮU DỤNG 23
21.1 backpropagation network 24
21.2 Đoạn mã khởi tạo một Kohonen SOM 24
22 CHƯƠNG TRÌNH ỨNG DỤNG MẠNG NEURON 25
22.1 Nhận dạng ký tự bàng cách vẽ chữ 25
Trang 41 Tổng quan về mạng nơron
1.1 Mạng nơron là gì
Mạng nơron nhân tạo, Artificaial Neural Network (ANN) gọi tắt là mạng nơron (neural network), là mô hình xử lý thông tin phỏng theo cách thức xử lý thông tin của các hệ nơron sinh học Nó được tạo nên từ một số lượng lớn các phần tử (gọi là phần tử xử lý hay nơron) kết nối với nhau thông qua các liên kết (gọi là trọng số liên kết) làm việc như một thể thông nhất để giải quyết một vấn đề cụ thể nào đó
1.2 ứng dụng trong lĩnh vực gì
Một mạng nơron nhân tạo được cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu, phân loại dữ liệu,…) thông qua một quá trình học từ các mẫu huấn luyện
Về bản chất học chính là quá trình hiệu chỉnh trọng số liên kết giữa các nơron
2 Cấu trúc của một nơron
Cấu trúc tổng quát
Trang 5Giải thích ký hiệu:
• Tập các đầu vào: là các tín hiệu vào (input signal) của nơron, các tín hiệunày thường được đưa dưới dạng vector N chiều
• Tập các liên kết: Mỗi liên kết được thể hiện bởi một trọng số (gọi là trọng
số liên kết – Synaptic weight) Thông thường các trọng số này được khởitạo một cách ngẫu nhiên ở thời điểm khởi tạo mạng và được cập nhậtliên tục trong quá trình học mạng
• Bộ tổng (Summing function): thường dùng để tính tổng của các tích đầuvào với trọng số liên kết của nó
• Ngưỡng (còn gọi là một độ lệch – bias): Ngưỡng này thường được đưa vàonhư một thành phần của hàm truyền
• Hàm truyền (Transfer function): Hàm này được dùng để giới hạn phạm viđầu ra của mỗi nơron Nó nhận đầu vào là kết quả của hàm tổng vàngưỡng đã cho
• Đầu ra: Là tín hiệu đầu ra của mỗi nơron, với mỗi nơron sẽ có tối đa làmột đầu ra
3 Học có giám sát và học không có giám sát
Một mạng nơron cần được đào tạo trước khi nó có thể được đưa vào sử dụng Huấn luyện liên quan đến việc đưa vào mạng nơron mẫu huấn luyện và cho phép nó tìm hiểu bằng cách hiệu chỉnh trọng số liên kết và các thông số khác nhau mạng nơ-ron có thể được phân loại thành hai loại dựa vào loại học tập
3.1 Mạng nơron học có giám sát:
Trong phương pháp học có giám sát, mạng nơron học từ các mẫu Tập huấn luyện bao gồm một tập hợp các mẫu đầu vào và các kết quả đầu ra mong muốn tương ứng với mẫu đầu vào Các mạng nơron điều chỉnh trọng số liên kết của nó để tìm hiểu mối quan hệ giữa các cặp đầu vào-đầu ra Mạng nơron được huấn luyện thành công thì có thể hể được sử dụng để tìm đầu ra phù hợp nhất đối với bất kỳ đầu vào hợp lệ
Mục tiêu của việc học có giám sát một mô hình toàn cục là tìm ra một hàm f, khicho sẵn một tập các điểm có dạng (x, f(x))
Trang 63.2 Trong phương pháp học không có giám sát:
Mạng nơron chỉ nhận được một tập hợp các đầu vào từ môi trường bên ngoài Nó
có vẻ bí ẩn để tưởng tượng những gì các mạng có thể có thể học hỏi từ thiết lập một chỉ số đầu vào Tuy nhiên, có thể để chính thức chứng minh rằng một mạng lưới không có giám sát có thể xây dựng đại diện của các đầu vào có thể được sử dụng cho việc ra quyết định
4 Giải thuật lan truyền ngược
Để huấn luyện mạng nơron ta cung cấp cho nó một bộ huấn luyện và cho phép
nó học bằng cách điều chỉnh trọng số của các liên kết mạng Một tập huấn luyện
là một tập hợp mẫu huấn luyện
Training Set = Set of training samples
Một mẫu đào tạo là một cặp của một vector đầu vào và một mẫu vectơ đầu ra mong muốn Trong trường hợp đào tạo không có giám sát, các vector đầu ra nênđược để null Chiều dài của vector đầu vào nên được tương tự như số lượng các nơron trong lớp đầu vào, và độ dài vector đầu ra nên được bằng số nơron trong lớp đầu ra
Training Sample = (input vector, desired vector)
Backpropagation thuật toán là một thuật toán giám sát thường được sử dụng để huấn luyện các mạng feed-forward Nó được giới thiệu lần đầu tiên bởi Paul Werbos trong cuốn sách 'The Roots của Backpropagation' Ý tưởng cơ bản là xác định mạng nơron hoạt động như thế nào với đầu vào mẫu, so sánh khác nhau như thế nào giữa các hành vi mong muốn và sau đó điều chỉnh trọng số của các liên kết để giảm thiểu sự khác biệt Quá trình này lặp đi lặp lại cho tất cả các mẫu đào tạo trong nhiều lần thiết lập để đảm bảo huấn luyện phù hợp
Việc huấn luyện mạng MLP bởi thuật toán lan truyền ngược sai số bao gồm hai quá trình: Quá trình truyền thẳng và quá trình truyền ngược Trong quá trình truyền thẳng, các vector đầu vào sẽ được cung cấp cho các nơron của mạng và tín hiệu sẽ được lan truyền lần lượt trên từng lớp mạng Cuối cùng ta sẽ tính được một tập các đầu ra thực sự của mạng Trong suốt quá trình truyền thẳng, tất cả các trọng số liên kết của mạng đều cố định Ngược lại, trong quá trình truyền ngược, tất cả các trọng số liên kết đó sẽ được hiệu chỉnh theo các luật hiệu chỉnh trọng số Sai số của mạng sẽ được đo bằng độ sai lệch giữa đầu ra thu được với các giá trị mục tiêu tương ứng Các sai số này sau đó sẽ được lan truyền ngược lần lượt trên các lớp mạng (từ lớp cuối cùng đến lớp đầu tiên) Các
Trang 7trọng số liên kết sẽ được hiệu chỉnh sao cho các đầu ra thực sự của mạng càng gần với các giá trị mục tiêu càng tốt.
5 Learning Rate
Learning rate là một trong những thông số mà điều chỉnh việc làm thế nào để một mạng noron học nhanh và làm thế nào để việc huấn luyện hiệu quả
Hãy xem xét một nơron mà đang trải qua quá trình học tập Giả định rằng trọng
số của một số liên kết trong mạng một phần được đào tạo là 0,3 Khi mạng đượcgiới thiệu một mẫu huấn luyện mới, thuật toán huấn luyện yêu cầu các liên kết thay đổi trọng số của nó đến 0,7 để nó có thể học các mẫu mới phù hợp Nếu chúng ta cập nhật trọng số ngay lập tức, các mạng nơron chắc chắn sẽ học các mẫu mới, nhưng nó có xu hướng quên đi tất cả các mẫu nó đã học trước đó Điều này là do trọng số hiện tại (0,3) là kết quả của tất cả việc học mà nó đã trảiqua cho đến nay
Vì vậy, chúng ta không trực tiếp thay đổi trọng số tới 0,7 Thay vào đó, chúng ta tăng nó bởi một phần nhỏ (chọn 25%) của sự thay đổi cần thiết Vì vậy, trọng số liên kết của được thay đổi thành 0,4 và chúng ta chuyển sang mẫu đào tạo tiếp theo Yếu tố này (0,25 trong trường hợp này) được gọi là Learning Rate Căn cứ theo cách này, tất cả các mẫu huấn luyên được huấn luyện trong một số thứ tự ngẫu nhiên Khi chu trình đào tạo lặp đi lặp lại nhiều lần, cuối cùng mạng nơron học tất cả các mẫu có hiệu quả
Learning rate là một giá trị trong khoảng từ 0 đến 1 Chọn một giá trị rất gần bằng không, đòi hỏi một số lượng lớn các chu trình huấn luyện Điều này làm cho quá trình huấn luyện rất chậm Mặt khác, nếu learning rate rất lớn, trọng số khác nhau và độ lệch hàm mục tiêu dao động lớn và mạng đạt đến một trạng thái mà việc huấn luyện diễn ra vô ích
Trang 9Một kiến trúc SOM Kohonen điển hình được hiển thị dưới đây Bao gồm một lớp đầu vào kết nối với một lớp đầu ra (Kohonen 2 chiều) thông qua một Connector Kohonen gồm các nơrôn Kohonen
Mỗi tế bào nơrôn trong một lớp Kohonen được liên kết với một tập các nơrôn khác trong không gian hai chiều
Trang 10Lớp tế bào nơron đầu vào với n nơron với Lớp đầu ra tổ chức riêng của mình để dựa vào đầu vào Vì thế gọi là mô hình tự tổ chức.
Trong giai đoạn đào tạo, một SOM xây dựng một mẫu đào tạo đại diện Mạng lưới đào tạo có thể sử dụng bản đồ vector đầu vào bất kỳ là không gian hai chiều
Mục tiêu đào tạo của SOM là để đảm bảo rằng các phần khác nhau của mạng phản ứng tương tự như các vector đầu vào
Vì vậy, việc đào tạo chủ yếu liên quan đến việc phân tích hành vi của các mạng lưới cho một mẫu đào tạo và điều chỉnh trọng lượng của một phần tử nơron để đảm bảo rằng các mạng lưới tiến hành một hành vi tương tự đối với một đầu vàogiống nhau Các thủ tục liên quan đến việc đào tạo các bước sau đây:
• Khởi tạo trọng những giá trị nhỏ ngẫu nhiên
• Chọn một mẫu đào tạo ngẫu nhiên, giao cho vector đầu vào trên các tếbào thần kinh và chạy mạng
• Đầu ra của một neuron tương ứng tỉ lệ với trọng lượng vector của nó vàcác vector đầu vào Các neuron đầu ra có giá trị cao nhất sẽ thông báo làngười chiến thắng cho các neuron đầu vào hiện hành
• Tính toán khoảng cách của mỗi neuron đầu ra từ những nơron chiếnthắng bằng cách sử dụng một Hàm Neighborhood
• Cập nhật các thông số của khớp nơron bằng cách sử dụng các công thứcsau đây
a= Thông số giữa của nơrol đầu vào
Trọng số b= (Mức độ học M) * (Giá trị so với nơrol hàng xóm) * a
• Tương tự như vậy, nó sẽ đào tạo tất cả các mẫu theo một thứ tự ngẫunhiên Điều này hoàn tất thành một chu trình đào tạo
Trang 11• Lặp lại các bước để hoàn thành số quy định của các thế đào tạo
Các SOM đào tạo các bản đồ vector đầu vào bất kỳ thành một neuron chiến thắng, và có thể được hiểu như là vị trí của vector trong không gian hai chiều
8 Hàm Neighborhood
8.1 Tổng quan
Trong một bản đồ tự tổ chức, hàm neighborhood xác định các thông số của một
tế bào nơrol từ tế bào nơrol đó tới nơrol chiến thắng trong cùng một lớp
Giá trị Neighnorhood ở neuron bị quyết định bởi vector trọng số của nó với những thay đổi ở nơrol chiến thắng
Nó thay đổi từ số không (cho một neuron ở khoảng cách xa vô hạn từ người chiến thắng) để cuối cùng người chiến thắng là chính nó
8.2 Hình minh họa
Một số hàm Neighborhood như Gaussian và Mexican-Hat như hình vẽ sau:
Hình 9.1: Hàm Gaussian Neighborhood
Hình 9.2: Hàm Mexican-Hat Neighborhood
Trang 129 Lưới Topology
Trong bản đồ lớp Kohonen Layer lưới topology quy định cụ thể sự sắp xếp của nơron lưới hai chiều tạo thành lớp Hàm Neighborhood được áp dụng trên topology này
Có 2 lưới Topology hay dùng là hình lục giác và hình chữ nhật
Trang 13Hình 11.1: Dạng phẳng Hình 11.2: Dạng đường thẳng Hình 11.3:Dạng hình vòng
Hình 11.4: Dạng hình trụ Hình 11.5:Dạng hình xuyến
11 Thiết kế mạng Nơron
Thiết kế một mạng nơron nhân tạo cho một ứng dụng cụ thể liên quan đến việc lựa chọn đúng loại mạng, tìm một số thích hợp của các lớp ẩn, phương pháp thích hợp để khởi tạo trọng số, thuật toán học thích hợp, các thế đào tạo, tỷ lệ học tập và số lượng mẫu đào tạo để sử dụng Hầu hết các thông số này đều phụ thuộc vào ứng dụng mà các mạng nơron đang được thiết kế
Dưới đây là một số hướng dẫn chung về thiết kế mạng nơrron:
11.1 Số lượng lớp ẩn (trong mạng Backpropagation)
Một mạng lưới Backpropagation không có lớp ẩn không thể thực hiện phân loại không tuyến tính Vì vậy, một trong những lớp ẩn là phải cho một mạng lưới backpropagation
Hơn nữa, nó đã được toán học đã chứng minh rằng một mạng lưới
backpropagation với lớp ẩn duy nhất khi đào tạo phù hợp, có thể dùng để xấp xỉ hàm Vì vậy, lớp ẩn duy nhất là sự lựa chọn tốt nhất trong hầu hết trường hợp
Có nhiều lớp ẩn tăng tốc quá trình học tập và mạng được đào tạo phù hợp chính xác với các mẫu đào tạo nhưng không thực hiện tốt trên các dữ liệu thử nghiệm.Hiệu ứng này được gọi là overtraining nơi mạng lưới huấn luyện có xu hướng ghi
Trang 1411.2 Mạng neurol ban đầu
Khởi tạo đúng trọng số liên kết nơron có ảnh hưởng lớn tới việc đào tạo tốc độ cũng như xác định hiệu quả của đào tạo Thông thường, trọng số được khởi tạo với giá trị ngẫu nhiên từ -0,5 đến +0,5 (giá trị cao có xu hướng kết quả trong khu vực bão hòa sau khi kích hoạt, các giá trị ban đầu nhỏ thì ra các giá trị gần bằng không)
Mạng nơron thực hiện quá trình khởi tạo như là một module pluggable Tuỳ chỉnhcác thuật toán khởi tạo có thể được cắm vào bằng cách thực hiện Initializer giao diện
11.3 Số mẫu huấn luyện
Quyết định như thế nào để các mẫu đại diện cho các chức năng huấn luyện thực
tế là tốt nhất Thông thường, các lỗi học hơi tăng so với sự gia tăng kích thước của tập huấn luyện, đồng thời ta cũng có thể nhận thấy rằng giảm lỗi và mạng thực hiện tốt hơn về dữ liệu thử nghiệm
Một mối quan hệ giữa kích thước mạng và số lượng tối ưu của mẫu đào tạo có thể được tìm thấy
12 Các lĩnh vực ứng dụng mạng nơron
12.1 Giải quyết các bài toán
Mạng trí tuệ nhân tạo (Artificial neural networks) được ứng dụng giải quyết các bài toán trong các lĩnh sau:
• Bài toán về Function Modeling
• Bài toán về phân loại (Classification Problems)
• Baì toán xử lý và rút trích dữ liệu (Data processing and featureextraction)
12.2 Phạm vi ứng dụng
Phạm vi ứng dụng của trí tuệ nhân tạo rất lớn: trong các tập đoàn tài chính nó được dùng để phân tích và dự đoán tài chính, nhận dạng chữ ký, nhận dạng ảnh,nhận dạng chữ viết, nhận dạng sinh trắc học, mô hình hóa các hệ thống động,
hệ thống tự động hóa, hệ thống chuyển từ dọng nói ra chữ viết, bóc tách dự liệu,trí tuệ nhân tạo dùng trong trò chới máy tính, hệ thống xác định đường đi trong giao thông vẫn tải, các hệ thống máy bay tự lái, etc
Trang 1513 Cài đặt môi trường phát triển
14.1 Neuron.Core namespace
• INeuron : Interface mô tả một nơron thần kinh
• ISynapse : Interface mô tả một khớp nối thần kinh trong mạng
• ILayer : Interface mô tả Layer trong mạng nơron
• IConnector : Interface mô tả một bô kết nối (connector) (kết nối giữa hai
layers)
• INetwork : Interface mô tả một mạng nơron
• IInitializer : Interface dùng để khởi tạo một cách thức làm việc cụ thể
của các lớp và các bộ kết nối trong một mạng cụ thể
• ILearningRateFunction : Learning Rate Function interface.
• Layer : Một thể hiện ở mức tổng quát hóa của interface 'ILayer' hay là
một tập hớp các 'INeuron's
• Connector : Một thể hiện ở mức tổng quát hóa của inter 'IConnector'
liên kết giữa hai layers
• Network : Một lớp cơ sở để thể hiện một mạng nơron Nó là triển khai
của interface 'INetwork'
• TrainingSample : Lớp này là thể hiện một cặp các vector: vector đầu