Trớc bằng: 1wTp + b = 0 Đối với các điểm trên biên, nội tích của vec tơ vào và vec tơ trọng số có cùng một giá trị.. Sau khi đã chọn vec tơ trọng số với góc định hớng đúng, giá trị độ dố
Trang 1GIỚI THIỆU MẠNG PERCEPTRON.
I.Cấu trúc của perceptron
1 Khái niệm chung :
Trớc hết ta xét mạng perceptron Mạng perceptron tổng quát nh hình:
Đầu ra của mạng là:
a = hardlim(Wp + b)
Ma trận trọng số có dạng:
=
W
R , S 2
, S 1 , S
R , 2 2
, 2 1 , 2
R , 1 2
, 1 1 , 1
w w
w
w w
w
w w
w
Ta định nghĩa một vec tơ bao gồm với các phần tử
hàng thứ i:
iw = [ wi,1 wi,2 wi,R]T
Bây giờ ta có thể viết lại ma trận trọng số:
W = [ 1wT 2wT 3wT SwT]T
Điều này cho phép ta viết đầu ra của phần tử thứ i của mạng :
ai = hardlim(ni) = hardlim(iwTp + bi) Trong đó hardlim là hàm có dạng:
<
= 10 khin n0 0
a
Do đó nếu nội tích của hàng thứ i của ma trận trọng số với vec
Hard limit layer
1
Input
p
Rx1 x1
Sì1 x1
Sì1 x1
S xR
a n
S
W w b
+
Mạng perceptron
a=hardlim(n)
n = Wp + b
Trang 2hợp khác sẽ bằng không Một neuron nh vậy trong mạng sẽ chia
không gian vào thành 2 phần.
2 Perceptron một neuron:
Ta khảo sát một mạng perceptron hai đầu vào có một neuron nh hình dưới Đầu ra của mạng đợc xác định bằng:
a = hardlim(n) = hardlim(Wp + b)
= hardlim(1wTp + b) = hardlim(w1,1p1 + w1,2p2 + b) Biên quyết định đợc xác định bằng các vec tơ đầu vào sao cho
đầu ra của mạng n bằng zero:
n = 1wTp + b = w1,1p1 + w1,2p2 + b = 0
Để có ví dụ cụ thể ta gán các trị sau cho ma trận trọng số và độ dốc:
w1,1 = 1 , w1,2 = 1 , b = -1 Vậy thì biên quyết định là:
n = 1wTp + b = w1,1p1 + w1,2p2 + b = p1 + p2 - 1 = 0 Biểu thức này xác định một đờng thẳng trong không gian đầu vào Trên một phía của đờng thẳng đầu ra của mạng bằng zero Ngay trên đờng thẳng và ở phía kia của đờng thẳng đầu ra bằng 1 Để vẽ
p
2
p
1
a = 1
a =
1
1w
1wTp + b
= 0
Σ
1
w 1,1
b
a n
p1
Inputs
p
2 w1,2
Two-Inputs Neuron
Perceptron hai đầu vào một đầu ra
Trang 3Các giao điểm này nằm tại p1 =1 và p2 = 1 Biên quyết định vẽ trên hình
Để xác định xem phía nào của đờng thẳng tơng ứng với đầu ra
là:
0
2 1 1 lim
−
Nh vậy đầu ra của mạng sẽ bằng 1 ở vùng bên trên(phần gạch gạch)
Ta có thể tìm biên quyết định bằng phơng pháp hình học Trớc
bằng:
1wTp + b = 0
Đối với các điểm trên biên, nội tích của vec tơ vào và vec tơ trọng số có cùng một giá trị Điều này thể hiện là các vec tơ vào có cùng một hình chiếu lên vec tơ trọng số, nh vậy chúng nằm vuông góc với vec tơ trọng số Hơn nữa một vec tơ bất kì nằm trong vùng gạch gạch trên hình trên có nội tích lớn hơn -b và vec tơ nằm trong vùng
chỉ về vùng có đầu ra của neuron bằng 1 Sau khi đã chọn vec tơ trọng số với góc định hớng đúng, giá trị độ dốc đợc tính bằng cách chọn một điểm trên biên và cho thoả mãn phơng trình
Ta dùng các khái niệm trên xét một mạng
perceptron thực hiện hàm logic AND Các
cặp đầu vào - đích của cổng là:
{p1 = [ 0 0]T , t1 = 0} {p2 = [ 0 1]T , t1
= 0}
{p3 = [ 1 0]T , t3 = 0} {p4 = [ 1 1]T , t1
= 1}
Trên hình vẽ là minh hoạ hình học bài
toán Nó biểu diễn không gian vào với mỗi
vec tơ vào đợc gán nhãn theo đầu ra đích
Hình tròn đen tơng ứng với đầu ra đích là
1 và hình tròn trắng ứng ra đích là 0
Trang 4Bớc đầu tiên của việc thiết kế là chọn biên quyết định Ta muốn
có đờng thẳng chia các hình tròn đen và trắng Bài toán này có vô
số nghiệm Hợp lí là chọn đờng nằm giữa các hình tròn này Tiếp đó
ta chọn vec tơ trọng số trực giao với biên quyết định Vec tơ trọng số
có thể có độ dài bất kì và nh vậy có rất nhiều khả năng Ta chọn:
1w = [ 2 2 ]T
Cuối cùng ta chọn độ dốc b Ta có thể thực hiện điều này bằng cách chọn một điểm trên biên quyết định và cho thoả mãn phơng trình (2-15) Nếu ta chọn :
p = [ 1.5 0 ]T
thì :
1wTp + b =[ ] +
ì
0
5 1 2
Chúng ta có thể thử mạng bằng một trong các cặp đầu vào-đầu
a = hardlim(1wT p2+ b) = hardlim[2 2]ì10−3
a = hardlim(-1) = 0
3 Perceptron nhiều neuron:
Mỗi neuron của perceptron có nhiều neuron có một biên quyết
định Biên quyết định của neuron thứ i là:
iwTp + bi = 0 Perceptron một neuron có thể phân các vec tơ vào thành 2 loại vì đầu ra của nó có thể là 0 hay 1 Một perceptron nhiều neuron có thể phân vec tơ vào thành nhiều loại, mỗi loại đợc biểu diễn bằng một vec tơ ra Vì mỗi phần tử của vec tơ ra có thể là1 hay 0 nên có tổng cộng 2S loại với S là số neuron
II Quy tắc học của perceptron
1 Khái niệm :
Bây giờ ta xét quy tắc học của các mạng perceptron Quy tắc học này là một ví dụ về huấn luyện có giám sát, trong đó quy tắc học
đợc cung cấp bằng một tập hợp ví dụ về hành vi riêng của mạng:
{ p1,t1 },{ p2,t2 }, { pQ,tQ }
Khi mỗi đầu vào đợc đa tới mạng, đầu ra của mạng đợc so với đầu ra
Trang 5đích Quy tắc học sẽ hiệu chỉnh trọng số và độ dốc của mạng để
đầu ra của mạng gần với đầu ra đích
2 Bài toán thử nghiệm :
Chúng ta sẽ bắt đầu bằng bài toán thử nghiệm đơn giản Các cặp đầu vào-đầu ra đích của bài toán là:
{ p1 = [ 1 2 ]T , t1 = 1 },{ p2 = [ -1 2 ]T , t2 = 0 },
{ p3 = [ 0 -1 ]T , t3 = 0 }
Bài toán đợc mô tả một cách hình học nh hình
bên, trong đó hai vec tơ vào có đích là 0 đợc biểu
diễn bằng hình tròn trắng và vec tơ vào có đích
là 1 đợc biểu diễn bằng hình tròn đen
Mạng đối với bài toán này có hai đầu vào và
một đầu ra
Để dễ dàng cho việc nghiên cứu quy tắc học, ta bắt đầu với mạng
Khi độ dốc bằng 0, mạng có biên quyết
định đi qua gốc Mạng cần phải có biên
hình vẽ ta cũng thấy các vec tơ trọng số
vuông góc với các biên quyết định
3 Xây dựng các quy tắc học :
Ta huấn luyện mạng bằng cách gán một vài giá trị ban đầu cho các thông số của mạng Trong trờng hợp này chúng ta đang huấn luyện một mạng hai đầu vào một đầu ra không có độ dốc Nh vậy ta chỉ phải khởi gán hai trọng số Chúng ta cho giá trị của vec tơ trọng
số một cách ngẫu nhiên:
1 3
Σ
w1,1
a n
p1
Inputs
p2 w1,2
No-Bias Neuron
Hình 2.4 Mạng thử nghiệm
Trang 6[1.0 0.8]
wT
ì
−
2
1 8 0 0 1
a = hardlim(-0.6) = 0 Mạng không đa ra giá trị đúng Đầu ra của mạng là 0, trong khi
xem hình bên
Khởi gán vec tơ trọng số đa đến biên quyết
Chúng ta cần thay đổi vec tơ trọng số
nó có thể phân loại toán tốt hơn Ta có thể
đặt 1w bằng p1 Điều này rất đơn giản và
Tuy nhiên quy tắc này không thể dùng cho mọi
bài toán Hình vẽ bên dới chỉ ra bài toán không
thể giải đợc bằng cách cho vec tơ trọng số chỉ
trực tiếp theo hớng của cả hai vec tơ của lớp 1
một trong các vec tơ này bị phân loại sai,
trọng số của lớp sẽ dao động tiến và lùi và sẽ
không bao giờ tìm đợc nghiệm
Một khả năng khác là cộng p1 vào 1w.
Cộng p1 vào 1w làm cho 1w trỏ gần hớng p1
của 1w gần một cách không đối xứng hớng của
(2-23)
Dùng quy quy tắc này cho bài toán của
1wnew = 1wold + p1 =
=
+
2 2
1 8 0 1
Hình bên minh hoạ kết quả
Bây giờ chúng ta xét vec tơ vào tiếp theo và
1
1w
3
2 1
1w
3
Trang 7tiếp tục thay đổi trọng số và quay vòng theo chu kì qua các vec tơ vào cho đến khi chúng đợc phân loại một cách đúng đắn Vec tơ
−
ì
2
1 2
1 0 2
a = hardlim(0.4) = 1
mạng lại là 1 Một vec tơ lớp 0 đã đợc phân loại
sai thành 1
Vì chúng ta muốn chuyển vec tơ trọng số
1w khỏi đầu vào, ta thay đổi phép cộng trong
phương trỡnh thành phép trừ:
nếu t = 0 và a = 1 thì 1wnew = 1wold -
Dùng quy quy tắc này cho bài toán của
1wnew = 1wold - p2 =12..20−−21 =−0.83
và đợc minh hoạ trên hình bên
a = hardlim(1w T p3) =hardlim[ ]
−
ì
−
1
0 8 0 0 3
a = hardlim(0.8) = 1
1wnew = 1wold - p3 =
=
−
−
0 3 1
0 8
0
0 3
Đồ thị bên trái chỉ rằng perceptron cuối cùng đã học đợc cách phân loại đúng đắn 3 vec tơ Nếu ta đa một vec tơ bất kì vào mạng neuron nó sẽ đa ra sự phân loại đúng đắn vec tơ vào đó Điều này đa ra cho chúng ta quy tắc thứ 3 và là quy tắc cuối cùng: nếu nó làm việc, đừng sửa trọng số: nếu t = a thì 1wnew = 1wold Sau đây là 3 quy quy tắc bao trùm toàn bộ các tổ hợp có thể có của các giá trị đầu ra và mục tiêu: nếu t = 1 và a = 0 thì 1wnew = 1wold + p 2 1
3 1w
3
2 1
3 1w
3
Trang 8nếu t = 0 và a = 1 thì 1wnew = 1wold - p
nếu t = a thì 1wnew = 1wold
4 Quy tắc học hợp nhất:
Ba quy tắc học có thể viết lại thành một biểu thức duy nhất Trớc hết ta định nghĩa một biến mới e gọi là sai số của perceptron :
e = t - a Bây giờ ta có thể viết lại 3 quy tắc trong:
nếu e = 1 thì 1wnew = 1wold + p
nếu e = -1 thì 1wnew = 1wold - p
nếu e = 0 thì 1wnew = 1wold
Xem cẩn thận hai quy tắc đầu ta thấy p và e cùng dấu Ngoài ra khi e
= 0 thì p không có mặt trong quy tắc thứ 3 Nh vậy ta có thể thống nhất 3 quy tắc vào một biểu thức duy nhất:
1wnew = 1wold + ep = 1wold + (t - a)p
Quy tắc này có thể mở rộng để huấn luyện độ dốc khi chú ý là độ dốc, một cách đơn giản, là trọng số của những đầu vào luôn luôn bằng 1 Nh vậy ta có thể thay thế đầu vào p trong (2-34) bằng đầu vào là độ dốc có trị bằng 1 Điều này đa đến quy tắc của perceptron
về độ dốc:
bnew = bold + e
5 Huấn luyện các perceptron có nhiều neuron: Quy tắc
perceptron cập nhật vec tơ trọng số của một perceptron có một neuron Chúng ta có thể tổng quát hoá quy tắc này cho perceptron có nhiều neuron Để cập nhật hàng thứ i của ma trận trọng số ta dùng:
iwnew = iwold + eip
Để cập nhật phần tử thứ i của vec tơ độ dốc ta dùng:
i
old i
new
Quy tắc perceptron có thể viết dới dạng ma trận:
T new new W p
i
new
Để thử quy tắc học của perceptron, ta lại khảo sát bài toán nhận dạng cam và táo Các vec tơ chuẩn vào-ra là:
[ ]
=
−
−
1 1
1 1
=
−
1 1
1 1
p
Trang 9Trong phần này ta sử dụng mục tiêu 0 cho cam thay vì dùng -1 nh
trong phần trớc vì ta dùng hàm truyền hardlim thay cho hàm
hardlims Một cách điển hình các trọng số và độ dốc đợc khởi gán
bằng một số ngẫu nhiên nhỏ Giả sử rằng ta bắt đầu bằng ma trận trọng số và độ dốc:
W = [ 0.5 -1 -0.5 ] , b = 0.5
+
−
−
−
1 1
1 5 0 1 5 0
a = hardlim(2.5) = 1 Bây giờ ta tính sai số:
e = t1 - a = 0 -1 = -1 Cập nhật trọng số:
T
p W
= [ -0.5 0 0.5]
Cập nhật độ dốc:
bnew = bold + e = 0.5 + (-1) = -0.5
Đến đây ta kết thúc lần lập đầu tiên Lần lặp thứ hai theo quy tắc perceptron là:
−
+
−
1 1
1 5 0 0 5 0
a = hardlim(-0.5) = 0
e = t2 - a = 1 - 0 = 1
T new
= [ 0.5 1 -0.5]
bnew = bold + e = -0.5 + 1 = 0.5
Lần lặp thứ 3 bắt đầu bằng vec tơ vào thứ nhất
+
−
−
1 1
1 5 0 1 5 0
a = hardlim(0.5) = 1
e = t1 - a = 0 -1 = -1
T new
Trang 10= [ -0.5 2 0.5]
Cập nhật độ dốc:
bnew = bold + e = 0.5 + (-1) = -0.5 Nếu ta tiếp tục lặp ta sẽ thấy là cả hai vec tơ vào sẽ đợc phân loại đúng Thuật toán đã hội tụ về nghiệm
III KHẢO SÁT MẠNG PERCEPTRON SỬ DỤNG GUI:
1.Thiết lập mạng Perceptron (nntool)
Ta thiết lập mạng perceptron thực hiện cổng logic AND Nú cú vộc tơ vào: p = [0
0 1 1; 0 1 0 1] và vộc tơ đớch là: t = [0 0 0 1]
a Thiết lập cỏc giỏ trị vào - ra :
Cỏc giỏ trị vào - ra được thiết lập bằng cụng cụ Network/Data Manager.
Thiết lập đầu vào: (inputs)
p = [0 0 1 1; 0 1 0 1]
Trang 11Thiết lập giá trị đích: (targets)
t = [0 0 0 1]
b Thiết lập mạng :
Sau khi thiết lập các giá trị đầu vào và giá trị đích, ta đi thiết lập mạng neuron dạng perceptron
Trang 12Ta thiết lập mạng với đầu vào p, đầu ra t, hàm chuyển đổi HARDLIM và hàm huấn luyện LEARNP
Mạng được mô hình hóa như dưới:
2 Huấn luyện mạng
Với mạng perceptron vừa xây dựng, ta đi huấn luyện cho mạng:
Trang 13Ta thiết lập số lần huấn luyện, sai số đích và cài đặt đầu vào, đầu ra.
Sau khi chọn các thông số huấn luyện ta được kết quả huấn luyện:
Trang 143 Xuất kết quả Perceptron ra vùng làm việc
Vậy, mạng đã được huấn luyện dễ dàng với sai lệch bằng 0 ở chu kỳ thứ 4 (các dạng mạng khác thường không thể huấn luyện để được sai lệch bằng 0 mà sai lệch của chúng thường bao hàm trong một phạm vi rộng)
Trang 15Chương trình Matlab:
Thông số đầu vào và đích:
>> t
t =
0 0 0 1
>> P
P =
0 0 1 1
0 1 0 1
Chương trình cấu trúc mạng Neuron Perceptron:
>> Vinh_neuron
Vinh_neuron = Neural Network object:
architecture:
numInputs: 1
numLayers: 1
biasConnect: [1]
inputConnect: [1]
layerConnect: [0]
outputConnect: [1]
numOutputs: 1 (read-only)
numInputDelays: 0 (read-only)
numLayerDelays: 0 (read-only)
subobject structures:
inputs: {1x1 cell} of inputs
layers: {1x1 cell} of layers
outputs: {1x1 cell} containing 1 output
biases: {1x1 cell} containing 1 bias
inputWeights: {1x1 cell} containing 1 input weight layerWeights: {1x1 cell} containing no layer weights
functions:
adaptFcn: 'trains'
divideFcn: (none)
gradientFcn: 'calcgrad'
initFcn: 'initlay'
Trang 16performFcn: 'mae'
plotFcns: {'plotperform','plottrainstate'}
trainFcn: 'trainc'
parameters:
adaptParam: passes
divideParam: (none)
gradientParam: (none)
initParam: (none)
performParam: (none)
trainParam: show, showWindow, showCommandLine, epochs, goal, time
weight and bias values:
IW: {1x1 cell} containing 1 input weight matrix
LW: {1x1 cell} containing no layer weight matrices
b: {1x1 cell} containing 1 bias vector
other:
name: ''
userdata: (user information)
Kết quả đầu ra và lỗi:
>> Vinh_neuron_outputs
Vinh_neuron_outputs = 0 0 0 1
>> Vinh_neuron_errors
Vinh_neuron_errors = 0 0 0 0