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ố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
Trang 1BÁ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
Trang 2CHƯƠ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
Trang 3Hì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
Trang 4Hình 3: 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
t X if
t X if Y
w x X
n
i
i i
1 1
1
Trang 5Mộ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
i
iw t x
sign Y
1
Trang 6Hì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
Trang 7- 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à
Trang 8
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
Trang 9Bước 4: Lặp
Trang 10CHƯƠ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
Trang 11III.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;
}
Trang 12
- 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]; }
}
Trang 13III.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
Trang 14Hình 8: Kết quả với hai cổng AND
Hình 9: Input với 4 cổng NAND
Trang 15Hình 10: Kết quả với 4 cổng NAND