23
TRƯỜNG ĐẠI HỌC QUỐC GIA HÀ NỘI ĐẠI HỌC CÔNG NGHỆ -----o0o----- BÁO CÁO Môn: TRÍ TUỆ NHÂN TẠO NÂNG CAO SỬ DỤNG MẠNG NEURAL XÂY DỰNG ỨNG DỤNG NHẬN DẠNG CHỮ VIẾT TAY Giảng viên hướng dẫn : ĐỖ NĂNG TOÀN Học viên thực hiện : NGUYỄN HỮU HUY NGUYỄN XUÂN KỲ ĐOÀN THỊ THÙY LINH Lớp : K16T3

Bai Tap Lon Tri Tue Nhan Tao

Embed Size (px)

Citation preview

Page 1: Bai Tap Lon Tri Tue Nhan Tao

TRƯỜNG ĐẠI HỌC QUỐC GIA HÀ NỘI

ĐẠI HỌC CÔNG NGHỆ

-----o0o-----

BÁO CÁO

Môn: TRÍ TUỆ NHÂN TẠO NÂNG CAO

SỬ DỤNG MẠNG NEURAL XÂY DỰNG ỨNG

DỤNG NHẬN DẠNG CHỮ VIẾT TAY

Giảng viên hướng dẫn : ĐỖ NĂNG TOÀN

Học viên thực hiện : NGUYỄN HỮU HUY

NGUYỄN XUÂN KỲ

ĐOÀN THỊ THÙY LINH

Lớp : K16T3

Hà nội, 4-2010

Page 2: Bai Tap Lon Tri Tue Nhan Tao

Mụ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:................................................5

4. GIẢI THUẬT LAN TRUYỀN NGƯỢC........................................................6

5. LEARNING RATE.................................................................................6

6. HÀM ACTIVE......................................................................................7

6.1. Mô hình hàm : y = 1 / (1 + Exp(-x)).............................................................7

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)...............................................................8

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...............................................................................11

2/19

Page 3: Bai Tap Lon Tri Tue Nhan Tao

10. MỘT SỐ HÌNH DẠNG CỦA LỚP KOHONEN...........................................12

11. 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.................................................................................13

11.3.Số mẫu đào tạo.........................................................................................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....................................................14

13.1.Ngôn ngữ lập trình.....................................................................................14

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

3/19

Page 4: Bai Tap Lon Tri Tue Nhan Tao

1. 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

4/19

Page 5: Bai Tap Lon Tri Tue Nhan Tao

Giả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ệu

nà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ởi

tạo một cách ngẫu nhiên ở thời điểm khởi tạo mạng và được cập nhật

liê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 đầu

và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ào

như 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, khi

cho sẵn một tập các điểm có dạng (x, f(x)).

3.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

5/19

Page 6: Bai Tap Lon Tri Tue Nhan Tao

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

trọ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

6/19

Page 7: Bai Tap Lon Tri Tue Nhan Tao

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 được

giớ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ải

qua 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.

6. Hàm Active

Hàm active trong mạng được xác định là cách để có được đầu ra của neuron từ

một tập đầu vào dựa trên thuật toán bakcpropagation.

Các thuật toán bakcpropagation yêu cầu một hàm active để thỏa mãn tính liên

tục và khả vi. Nó yêu cầu cần có hàm active để dễ dàng tính toán.

Một số hàm active như Sigmoid, Linear, Logarit, Tan, Sin…

7/19

Page 8: Bai Tap Lon Tri Tue Nhan Tao

6.1. Mô hình hàm : y = 1 / (1 + Exp(-x))

Hình 7.1: Mô hình hàm : y = 1 / (1 + Exp(-x))

6.2. Mô hình hàm : y = x

Hình 7. 2: Mô hình hàm : y = x

6.3. Hình 7.3: Mô hình hàm y = Log(1 + |x|)

Hình 7.3: Mô hình hàm y = Log(1 + |x|)

8/19

Page 9: Bai Tap Lon Tri Tue Nhan Tao

6.4. Hình 7. 4: Mô hình hàm y = sin(x)

Hình 7. 4: Mô hình hàm y = sin(x)

6.5. Hình 7.5: Mô hình hàm y=Tan(x)

Hình 7.5: Mô hình hàm y=Tan(x)

7. Bản đồ tổ chức Kohonen SOM (Kohonen Self -Organizing Maps)

Bản đồ Kohonen SOM là phương pháp học không có giám sát được sử dụng

rộng rãi để giảm tính đa chiều của không gian đầu vào nhưng vẫn đảm bảo

đúng cấu trúc đồ thị của nó.

Mộ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.

9/19

Page 10: Bai Tap Lon Tri Tue Nhan Tao

Lớ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ào

giố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ến

thắ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ức

sau đâ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ẫu

nhiên. Điều này hoàn tất thành một chu trình đào tạo.

10/19

Page 11: Bai Tap Lon Tri Tue Nhan Tao

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

11/19

Page 12: Bai Tap Lon Tri Tue Nhan Tao

9. 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

Hình 10.1: Rectangular Topology

Hình 10.2: Hexagonal Topology

10. Một số hình dạng của lớp Kohonen

NeuronNetwork hỗ trợ các hàng và cột có thể vo tròn. Tính năng này có thể

được dùng để tạo ra các lớp Kohonen với hình dạng khác nhau.

12/19

Page 13: Bai Tap Lon Tri Tue Nhan Tao

Hì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

nhớ các mẫu huấn luyện thay vì học tập chúng.

13/19

Page 14: Bai Tap Lon Tri Tue Nhan Tao

11.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ỉnh cá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 feature

extraction)

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.

14/19

Page 15: Bai Tap Lon Tri Tue Nhan Tao

13. Cài đặt môi trường phát triển

13.1. Ngôn ngữ lập trình

Dự án được viết trên ngôn ngữ C#. Do vậy bạn cần phải sử dụng Microsoft .NET

framework.

13.2. Công cụ phát triển

Sử dụng công cụ phát triển là Visual Studio Express editions

(http://www.microsoft.com/Express/ )

14. NeuronNetwork Class

Những thông tin mô tả về các class được mô tả tại mục này. Ví dụ như: layers,

connectors, networks and TrainingSet. Tất cả các class này được thừa kế từ

class 'ISerializable' interface

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

vào và vector đầu ra mong muốn.

15/19

Page 16: Bai Tap Lon Tri Tue Nhan Tao

TrainingSet : Là tập hợp của các TrainingSample.

TrainingMethod : Thể hiện phương thức học của mạng nơron là học có

giám sát hay không giám sát

ConnectionMode : Thể hiện một bộ kế nối là một-một connector hay

nhiều-nhiều

14.2. NeuronNetwork.Core.Initializers namespace

Có rất nhiều các phương thức khởi tạo cho mạng

như: ConstantFunction, NGuyenWidrowFunction, ZeroFunction, Random

Function và NormalizedRandomFunction được mô tả trong namespace này.

14.3. NeuronNetwork.Core.LearningRateFunctions namespace

Namespace chứa các hàm dùng cho Learning rate

như: HyperbolicFunction, ExponentialFunction và LinearFunction.

14.4. NeuronNetwork.Core.BackPropagation namespace

ActivationNeuron : một nơron trong mạng lan truyền ngược

BackpropagationSynapse : Các bộ kết nối giữa hai activation

neurons

ActivationLayer : một lớp tổng quát hóa của activation neurons

BackpropagationConnector : một tập các

BackpropagationSynapses kết nối giữa hai activation layers

BackpropagationNetwork : Một mạng lan truyền ngược

LinearLayer, LogarithmLayer, SigmoidLayer, SineLayer và TanhLa

yer thừa kế lớp ActivationLayer để triển khai một thể hiên tương ứng

với các hàm activation functions.

14.5. NeuronNetwork.Core.SOM namespace

PositionNeuron : một nơron a Kohonen network

KohonenSynapse : Liên kết một nơron và một PositionNeuron

KohonenLayer : một layer của PositionNeurons

KohonenConnector : một tập hợp các KohonenSynapses liên kết các

Kohonen Layers

KohonenNetwork : thể hiện một Self-Organizing Map

16/19

Page 17: Bai Tap Lon Tri Tue Nhan Tao

LatticeTopology : chỉ định dạng lưới lattice topology là Hexagonal hay

Rectangular.

INeighborhoodFunction : Interface biểu diễn một neighborhood

function

14.6. NeuronNetwork.Core.SOM.NeighborhoodFunctions namespace

Namespace này bao gôm các class sau

GaussianFunction và MexicanHatFunction 

15. Một vài đoạn code hữu dụng

15.1. backpropagation network

Đoạn mã bên dưới tạo ra một backpropagation network có một lớp đầu vào

là LinearLayer chứa mười nơron, một lớp ẩn sigmoid chưa năm nơron và một

lớp đầu ra sigmoid chứa bảy nơron.

Để tạo một mạng nơron, đầu tiên cần khởi tạo các lớp (layers), sau đó kết nối

các lớp bằng cách tạo ra các connectors và rồi tạo ra mạng nơron bằng cách

cung cấp các lớp đầu vào và đầu ra. Không được sửa đổi cấu trúc của mạng sau

khi tạo ra nó (Không tạo ra bất kỳ các Layer hoặc connector nào khi đã tạo

mạng thành công).

Cần chú ý lớp đầu vào của một mạng backpropagation luôn luôn là một

linear layer bởi vì chúng ta không muốn thay đổi dữ liệu đầu vào thêm độ lệch

hay thực hiện activation function.

15.2. Đoạn mã khởi tạo một Kohonen SOM.

17/19

Page 18: Bai Tap Lon Tri Tue Nhan Tao

Bất cứ lúc nào cũng có thể thay đổi thuộc tính của các layers và các

connnectors.

Một learning rate function được liên kết với mọi layer trong mạng. Chúng ta

có thể thay đổi thuộc tính này cho mỗi một layer. Nếu muốn sử dụng duy nhất

một hàm cho mọi lớp chúng ta có thể sử dụng hàm SetLearningRate cho

network

Để dạy mạng ta cần các mẫu ví dụ (bao gồm đầu vào và đầu ra). Chúng ta cần

tạo ra một tập hợp các mẫu training samples và chúng ta có thể dạy mạng

này chống lại các training set.

16. Chương trình ứng dụng mạng Neuron

16.1. Nhận dạng ký tự bàng cách vẽ chữ.

Đây là màn hình chương trình nhận dạng ký tự A bằng cách vẽ chữ A.

18/19

Page 19: Bai Tap Lon Tri Tue Nhan Tao

Màn hình dạy chương trình nhận dãng ký tự A.

19/19