Tải bản đầy đủ (.pdf) (15 trang)

BÁO CÁO ARTIFICAL NEURAL NETWORKS ỨNG DỤNG THUẬT GIẢI LAN TRUYỀN NGƢỢC VÀO MỘT SỐ CỔNG LOGIC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (652.45 KB, 15 trang )





BÁO CÁO
ARTIFICAL NEURAL NETWORKS
ỨNG DỤNG THUẬT GIẢI LAN TRUYỀN NGƢỢC
VÀO MỘT SỐ CỔNG LOGIC






Hồ Chí Minh, ngày , tháng , năm
Giáo viên hƣớng dẫn
Phạm Thi Vƣơng

Họ tên Sinh Viên
MSSV
Phạm Trung Kiên
11520187
Hoàng Xuân Lâm
11520198

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

CHƢƠNG I: TỔNG QUAN VỀ ĐỀ TÀI


I.1. Mục tiêu của đề tài.
Mục tiêu của đề tài là xây dựng một ứng dụng nhỏ nhằm mô phỏng cách hoạt động
của thuật giải lan truyền ngƣợc (back propogation). Ứng dụng mà nhóm xây dựng là ứng
dụng áp dụng lan truyền ngƣợc để tính cá gí trị đầu ra của các công logic nhƣ: AND, OR,
NOT, XOR, NAND.
I.2. Phạm vi của đề tài
Đề tài mới chỉ biểu diễn đơn(ngoài NAND và XOR) cổng tức là chƣa có sự kết hợp
của nhiều cổng logic khác nhau. Số lƣợng ngõ nhập của mỗi cổng còn ít.
I.3 Phƣơng pháp tìm hiểu.
Để tìm hiểu thuật giải và cài đặt ứng dụng nhóm đã làm các bƣớc sau:
Bƣớc 1: Tìm hiểu lý thuyết mạng nơron nhân tạo(ANN) và các thuật giải.
Bƣớc 2: Chọn lọc đề tài tìm hiểu và đó là thuật giả lan truyền ngƣợc
Bƣớc 3: Tìm hiểu các vấn đề liên quan và chọn ra các bài toán về cổng logic.
CHƢƠNG II: CƠ SỞ LÝ THUYẾT
II.1. Giới thiệu nơron sinh học
 Não bộ con ngƣời gồm:
- 1010 tế bào thần kinh – neuron, 6x1014 khớp thần kinh synapse
- Mỗi tế bào có cấu trúc đơn giản.
- Một neuron bao gồm: thân – soma, nhiều sợi thần kinh – dendrite và một
sợi trục chính – axon.

Hình 1: Mạng nơron thần kinh
 Cơ chế học của neuron thần kinh
- Tín hiệu đƣợc lan truyền giữa các neuron.
- Một neuron nhận tín hiệu kích thích từ các khớp nối và phát tín hiệu qua
soma đến các neuron khác.
- Mối liên hệ giữa các neuron (bộ nhớ dài hạn) quy định chức năng của mạng
nơron và đƣợc hình thành từ từ qua quá trình học.
II.2 Mạng nơron nhân tạo
II.2.1. Khái niệm

Mạng nơron nhân tạo (Artificial Neural Netwok – ANN): là một tập hợp các bộ xử
lý rất đơn giản – nơron– và nối với nhau.

Hình 2: Mạng nơron nhân tạo
Cấu trúc và phƣơng thức hoạt động của ANN mô phỏng tƣơng tự mạng neuron sinh
học. Dƣới đây là sƣ tƣơng quan các yếu tố cảu mạng nơron sinh học và mạng nơron nhân
tạo.
Mạng neuron sinh học
Mạng neuron nhân tạo
Hình 3: Sơ đồ
Soma
Neuron
Denrite
Input
Axon
Output
Synapse
Weight (trọng số)
Các nơron đƣợc bởi các liên kết với các trọng số tƣơng ứng. Các trọng số ứng với
bộ nhớ dài hạn của ANN.
ANN “học” bằng cách điều chỉnh từ từ các trọng số này qua quá trình tƣơng tác với
môi trƣờng (huấn luyện).
Một số mạng nơron tiêu biểu:
- Mạng nơron nhiều lớp (Multilayer Perceptron): đƣợc ứng dụng rộng rãi trong các
bài toán phân lớp (nhận dạng), hồi quy (dự đoán)…
- Mạng Hopfield: một loại bộ nhớ nội dung có thể đánh địa chỉ (content-addressable
memory), dùng để lƣu trữ dữ liệu.
- Ánh xạ tự tổ chức (Self Organising Maps) – Mạng Kohonen: dùng trong học bán
giám sát, dùng để gom nhóm dữ liệu.
II.2.2. Thành phần tính toán

Dƣới đây là hình minh họa sơ đồ tính toán.














t: Ngƣỡng hoạt hóa

Y đƣợc gọi là hàm kích hoạt hay hàm truyền









tXif
tXif
Y

wxX
n
i
ii
1
1
1






Một số hàm truyền trong thực tế:

Hàm sign và step đƣợc gọi là hàm giới hạn cứng.
II.3 Mạng nơron nhiều lớp
Một mạng nơron lan truyền tiến gồm một lớp nhập, ít nhất một lớp ẩn, và một lớp
xuất.









n
i

ii
twxsignY
1

Hình 4: Mạng nơron nhiều lớp
 Lớp nhập: nhận các input và phân phối chúng cho tất cả neuron trong lớp ẩn
 Lớp xuất: biểu diễn kết quả của toàn mạng
 Lớp ẩn:
- Dò tìm các đặc trƣng.
- Các neuron trong lớp này “ẩn” các kết xuất mong muốn của chúng.
- Mạng một lớp ẩn có thể biểu diễn bất kỳ hàm liên tục nào.
- Mạng hai lớp ẩn có thể biểu diễn các hàm không liên tục.

Quá trình học gồm hai pha:
- Lan truyền các mẫu input từ lớp nhập đến lớp xuất, tại mỗi neuron tính











- Lan truyền ngƣợc sai số từ lớp xuất và cập nhật các trọng số
II.4. Luật học MLP
- Tại nút xuất, tính sai số với là kết xuất mong muốn ở nút k tại vòng lặp thứ p.




- Cập nhật sai số tƣơng tự luật học perceptron .



với:

Trong đó: gradient sai số tại nơron p của lớp xuất.
- Gradient sai số = đạo hàm hàm kích hoạt nhân với sai số tại neuron xuất.







- tính đạo hàm ta đƣợc:


trong đó:


-
- Tại nút ẩn, ta có thể áp dụng cùng công thức với lớp xuất:

trong đó: là gradient sai số tại neuron j trong lớp ẩn.

với l là số neuron của nút xuất và







với n là số neuron của lớp nhập
II.5. Thuật toán lan truyền ngƣợc
Bƣớc 1: Khởi tạo
Đặt giá trị ngẫu nhiên các trọng số và ngƣỡng của mạng
Bƣớc 2: Kích hoạt
- Tính kết xuất thực sự của các nơron trong lớp ẩn:




- Tính kết xuất thực sự của các neuron trong lớp xuất


Bƣớc 3: Huấn luyện trọng số
- Tính gradient sai số cho các neuron lớp xuất:




- Cập nhật các trọng số của neuron lớp xuất:




- Tính gradien sai số và cập nhật trọng số lớp ẩn











Bƣớc 4: Lặp

CHƢƠNG III: CÀI ĐẶT ỨNG DỤNG
III.1. Công cụ cài đặt
Ứng dụng đƣợc cài đặt bằng ngôn ngữ Java trên NetBeans IDE 8.0 và Netbean
Platform.
III.2. Chức năng của ứng dụng
Ứng dụng gồm ba chức năng chính là setting, trainer và tester.
- Chức năng setting là chức năng cài đặt các dữ kiện cho bài toán.
- Chức năng trainer là chức năng huấn luyện các bài toán trong ứng dụng.
- Chức năng tester là chức năng kiểm tra sau khi trải qua quá trình huấn luyện.


Hình 5: Giao diện các chức năng chính







III.3. Một số phần xử lý chính của ứng dụng
- Hàm truyền:
public double trigger( double value ) {
return 1.0 / (1.0 + Math.pow(Math.E, -value));
}
- Lấy sai số ứng với lớp xuất:
//lay gia tri sai so cho output layer
for (int i = 0; i < numberOfOutputs; i++)
{
delta_outputs[i] = outputs[i] * (1.0 - outputs[i]) * (target[i] - outputs[i]);
}
- Lấy sai số ứng với lớp ẩn:
// lay gia tri sai so cho hidden layer
for (int i = 0; i < numberOfHiddens + 1; i++)
{
double error = 0.0;
for (int j = 0; j < numberOfOutputs; j++)
{
error += hiddenToOutputWeights[i][j] * delta_outputs[j];
}
delta_hidden[i] = hiddens[i] * (1.0 - hiddens[i]) * error;
}



- Cập nhập trong số giữa lớp ẩn và lớp xuất:
// cap nhap trogn so nam giua hidden & output layer
for (int i = 0; i < numberOfOutputs; i++)
{
for (int j = 0; j < numberOfHiddens + 1; j++)

{
hiddenToOutputWeights[j][i] += learningRate * delta_outputs[i] * hiddens[j];
}
}
- Cập nhập trọng số giữa lớp vào và lớp ẩn:
// cap nhap trogn so giua input & hidden layer
for (int i = 0; i < numberOfHiddens; i++)
{
for (int j = 0; j < numberOfInputs+1; j++)
{
inputToHiddenWeights[j][i] += learningRate * delta_hidden[i] * inputs[j];
}
}








III.4. Một số hình ảnh demo của ứng dụng

Hình 7: Input với hai cổng AND
Hình 6: Khởi tạo mạng


Hình 8: Kết quả với hai cổng AND
Hình 9: Input với 4 cổng NAND












Hình 10: Kết quả với 4 cổng NAND

×