Mạng Neural và ứng dụng của mạng Neural trong lĩnh vực CNTT CH1301085
Mục Lục
Lời mở đầu
Ngày nay không ai có thể phủ nhận vai trò cực kỳ quan trọng của máy tính trong
nghiên cứu khoa học kỹ thuật cũng như trong đời sống. Máy tính đã làm được những
điều kỳ diệu và giải được những vấn đề tưởng chừng nan giải. Từ đầu những năm 1940, ý
tưởng truyền cho máy tính có khả năng suy nghĩ và học hỏi như con người đã được các
nhà khoa học tìm tòi phát triền và đây cũng chính là nguồn gốc ra đời của mạng Neural.
Nó thực sự được chú ý và nhanh chóng trở thành một hướng nghiên cứu đầy triển vọng
trong mục đích xây dựng các máy thông minh tiến gần tới trí tuệ con người.
Hiện nay mạng Neural đang được ứng dụng trong rất nhiều các lĩnh vực khác nhau
như trong lĩnh vực nhận dạng ( hình ảnh, giọng nói, chứ viết…) hay trong lĩnh vực an
ninh ( hệ thống phát hiện xâm nhập). Như chúng ta đã biết, Thông tin ngày càng trở lên
quan trọng, là chìa khóa thành công cho nhiều vấn đề. Chính vì thế mà bài toán bảo mật
cho hệ thống thông tin là một bài toán khó tìm lời giải triệt để nhất. Làm thế nào để tăng
cường an toàn cho dữ liệu, cho toàn hệ thống tránh khỏi việc mất mát dữ liệu do các lỗ
hổng bảo mật hay sự tấn công từ hacker, virus, Trojan Một cách tổng quát, hệ thống
phát hiện xâm nhập - Intrusion detection system ( IDS) là một loại mới của công nghệ an
1
Mạng Neural và ứng dụng của mạng Neural trong lĩnh vực CNTT CH1301085
toàn mạng mà có thể bảo vệ tích cực máy tính của bạn từ những tấn công của người xâm
nhập. Khi phát hiện bất kỳ nỗ lực xâm nhập hoặc sự xâm nhập, nó có thể báo cáo kịp thời
chúng cho người quản trị mạng, cho phép người quản trị biện pháp ngăn cản hoặc khắc
phục như là ngắt kết nối mạng để ngăn cản sự mở rộng của dữ liệu không chính xác, và
gửi cảnh báo đến kẻ xâm nhập. Tuy nhiên, làm thế nào để phát hiện liệu có sự xâm nhập
hay không là một vấn đề cần giải quyết đầu tiên. Phát hiện xâm nhập phụ thuộc vào sự
phân loại và nhận dạng các vấn đề với một số lớn các điều kiện phi tuyến làm cho nó cần
thiết phải học các cách tiếp cận đã tích hợp các điều kiện phi tuyến để giải quyết vấn đề.
Công nghệ thông tin phát triển không ngừng và công nghệ phát hiện xâm nhập cũng
luôn cần đổi mới. Mạng Neural là bước tiến cho sự đổi mới về công nghệ phát hiện xâm
nhập, khắc phục được nhiều điểm thiếu sót của IDS truyền thống, cho thấy rằng công
3
Mạng Neural và ứng dụng của mạng Neural trong lĩnh vực CNTT CH1301085
liên kết mới giữa các Neural hoặc thay đổi các liên kết đang có. Từ những hiểu biết này,
người ta xây dựng và phát triển mạng Neural nhân tạo dựa trên mô hình của Neural sinh
học với mục đích là có thể huấn luyện các mạng Neural nhân tạo này để chúng có thể giải
quyết một số bài toán theo cách của bộ não sinh học thực hiện đồng thời thông qua đó tìm
hiểu các cơ chế nhớ và cách tính toán của bộ não.
I.2. Neural Sinh học :
Một Neural được cấu gồm những thành phần chính sau: Dendrite, Soma, Synapse,
Axon như hình 1
Hình 1: Mô hình Neural sinh học
Soma là thân của Neural.
Các dendrites là các dãy mảnh, dài, gắn liền với soma, chúng truyền dữ liệu (dưới
dạng xung điện thế) đến cho soma xử lý. Bên trong soma các dữ liệu đó được tổng hợp
lại, có thể xem gần đúng sự tổng hợp ấy như là một phép lấy tổng tất cả các dữ liệu mà
Neural nhận được.
Một loại dây dẫn tín hiệu khác cũng gắn với soma là các axon. Khác với dendrites,
axons có khả năng phát các xung điện thế, chúng là các dây dẫn tín hiệu từ Neural đi các
nơi khác. Chỉ khi nào điện thế trong soma vượt quá một giá trị ngưỡng nào đó thì axon
mới phát một xung điện thế, còn nếu không thì nó ở trạng thái nghỉ.
Axon nối với các dendrites của các Neural khác thông qua những mối nối đặc biệt gọi
là synapse. Khi điện thế của synapse tăng lên do các xung phát ra từ axon thì synapse sẽ
nhả ra một số chất hoá học (neurotransmitters); các chất này mở "cửa" trên dendrites để
4
Mạng Neural và ứng dụng của mạng Neural trong lĩnh vực CNTT CH1301085
cho các ions truyền qua. Chính những ions này làm thay đổi điện thế trên dendrites, tạo ra
các xung dữ liệu lan truyền tới các Neural khác.
Bộ não con người có khoảng 10
11
Neural được nối với nhau bởi 10
Hình 2: Mô hình một Neural nhân tạo
Liên kết Neural là một thành phần của mạng Neural nhận tạo để liên kết giữa các
Neural, nó nối đầu ra của Neural lớp này với đầu vào của một Neural trong lớp khác. Đặc
trưng của thành phần liên kết là một trọng số mà mỗi tín hiệu đi qua đều được nhân với
trọng số này. Các trọng số liên kết chính là các tham số tự do cơ bản của mạng neuron, có
thể thay đổi được nhằm thích nghi với môi trường xung quanh.
I.4. Triển vọng phát triển của mạng Neural
Mạng Neural đã được ứng dụng trong nhiều lĩnh vực. Chất lượng và số lượng của
chúng tăng lên rất nhanh và hứa hẹn giải quyêt nhiều bài toán mà thực hiện bằng các
phương pháp truyền thống là rất khó khăn. Dưới đây liệt kê ra một số ứng dụng chính của
mạng Neural:
Aerospace: Phi công tự động, giả lập đường bay, các hệ thống điều khiển lái máy
bay, bộ phát hiện lỗi.
Automotive: Các hệ thống dẫn đường tự động cho ô tô, các bộ phận tích hoạt động
của xe.
Banking: Bộ đọc séc và các tài liệu, tính tiền của thẻ tín dụng.
Defense: Định vị - phát hiện vũ khí, dò mục tiêu, phát hiện đối tượng, nhận dạng
nét mặt, các bộ cảm biến thế hệ mới, xử lý ảnh radar,…
6
a
f
w
k
Đầu ra a=f( ∑w’y+b)
w
1
w
2
Đầu vào
Mạng Neural và ứng dụng của mạng Neural trong lĩnh vực CNTT CH1301085
Thông thường các Neural có nhiều đầu vào. Một Neural có R đầu vào p
1
,p
2
,p
R
sẽ có
các trọng số tương ứng w
1
,w
2
, ,w
R
tạo thành một ma trận W và được gọi là ma trận trọng
số.
Hình 3: Mô hình một Neural nhân tạo
Đầu vào p
i
: Đặc trưng cho các tín hiệu điện kích thích trên các dây thần kinh của
mạng Neural sinh học. Các đầu vào này có thể có giá trị nhị phân là +1/-1 hoặc +1/0.
Trọng số w
i
: Mỗi đầu vào có một trọng số w
i
. Trọng số có giá trị là số thực dương
hoặc âm.
Tổng trọng số n( Net): là hàm tổng hợp các tín hiệu vào của Neural. Các hàm Net
thường dùng là:
• Hàm tổng:
n =
p
1
2
+ w
2
p
2
2
+ + w
R
p
R
2
Hàm chuyển f(n,b):(còn được gọi là hàm kích hoạt hay hàm tích hợp): là một dạng
hàm không tuyến tính đóng vai trò biến đổi từ Net sang tín hiệu đầu ra a. Các dạng hàm
kích hoạt sau thường được dùng trong thực tế:
Hình 4: Hàm chuyển giới hạn cứng
Hình 5: Hàm chuyển tuyến tính
9
Mạng Neural và ứng dụng của mạng Neural trong lĩnh vực CNTT CH1301085
Hình 6: Hàm chuyển Sigmoid
Ngưỡng b: Ngưỡng b đóng vai trò tăng tính thích nghi và khả năng tính toán của
mạng Neural. Trong các mạng Neural có sử dụng ngưỡng b, ta có thể coi như thêm một
tín hiệu đầu vào x
R+1
với trọng số tương ứng w
R+1
. Giá trị của x
R+1
a = n -1 ≤ n ≤ 1
a = 1 n > 1
Satlins
Log-Sigmoid a = 1/ (1+ e
-n
) logsig
Sigmoid tang
hypebolic
a = (e
n
- e
-n
)/ (e
n
+ e
-n
) Tansig
Tuyến tính dương
a = 0 n < 0
a = n n ≥ 0
Poslin
10
Mạng Neural và ứng dụng của mạng Neural trong lĩnh vực CNTT CH1301085
Cạnh tranh a = 1 với nơrom có giá trị
đầu ra cực đại
a = 0 với các Neural khác
compet
II.2. Đặc trưng của mạng Neural
II.2.1. Tính phi tuyến.
Một Neural có thể tính toán một cách tuyến tính hay phi tuyến. Một mạng Neural,
II.2.5. Tính chất chấp nhận sai xót.
Một mạng Neural, được cài đặt dưới dạng phần cứng, vốn có khả năng chấp nhận
lỗi, hay khả năng tính toán thô, với ý nghĩa là tính năng của nó chỉ thoỏi hoá khi có
những điều kiện hoạt động bất lợi. Ví dụ, nếu một Neural hay các liên kết kết nối của nó
bị hỏng, việc nhận dạng lại một mẫu được lưu trữ sẽ suy giảm về chất lượng.
II.2.6. Khả năng cài đặt VLSI(Very-large-scale-intergrated).
Bản chất song song đồ sộ của một mạng Neural làm cho nó rất nhanh trong tính
toán đối với một số công việc. Đặc tính này cũng tạo ra cho một mạng Neural khả năng
phù hợp cho việc cài đặt sử dụng kỹ thuật Very-large-scale-intergrated (VLSI). Kỹ thuật
này cho phép xây dựng những mạch cứng tính toán song song quy mô lớn. Chính vì vậy
mà ưu điểm nổi bật của VLSI là mang lại những phương tiện hữu hiệu để có thể xử lý
được những hành vi có độ phức tạp cao.
II.2.7. Tính chất đồng dạng trong phân tích và thiết kế.
Về cơ bản, các mạng Neural có tính chất chung như là các bộ xử lý thông tin.
Chúng ta nêu ra điều này với cùng ý nghĩa cho tất cả các lĩnh vực có liên quan tới việc
ứng dụng mạng Neural. Đặc tính này thể hiện ở một số điểm như sau:
12
Mạng Neural và ứng dụng của mạng Neural trong lĩnh vực CNTT CH1301085
• Các Neural, dưới dạng này hoặc dạng khác, biểu diễn một thành phần chung
cho tất cả các mạng Neural.
• Tính thống nhất này đem lại khả năng chia sẻ các lý thuyết và các thuật toán
học trong nhiều ứng dụng khác nhau của mạng Neural.
• Các mạng tổ hợp (modular) có thể được xây dựng thông qua một sự tích hợp
các mô hình khác nhau.
II.3. Phân loại mạng Neural
Mạng Neural là hệ thống bao gồm nhiều phần tử xử lý đơn giản( Neural) hoạt
động song song. Tính năng của hệ thống này tuỳ thuộc vào cấu trúc của hệ, các trọng số
liên kết và quá trình tính toán tại các Neural đơn lẻ. Có nhiều cách phân loại mạng
Neural, chủ yếu là dựa trên các cơ sở sau:
II.3.1. Theo kiểu liên kết Neural
và vectorr đầu ra riêng. Chúng ta sẽ ký hiệu chỉ số trên của mỗi biến là số thứ tự của
lớp(W
1
, W
2
, a
1
, a
2
, )
Đầu ra của lớp j-1 là đầu vào của lớp j, đầu ra của lớp j ;à đầu vào của lớp j+1. Do
vậy với lớp thứ j có S
j-1
đầu vào, S
j
Neural đầu ra và S
j-1
.S
j
trọng số trong ma trận W
j
. Đầu
vào của mạng thứ j là a
j-1
và đầu ra là a
j
.
Lớp cuối cùng của mạng Neural gọi là lớp ra. Các lớp khác gọi là lớp ẩn.
Hình 7: Mạng Neural đa tầng
15
Vì vậy để xây dựng một mạng Neural ta xây dựng một đồ thị có hướng: số đỉnh của
đồ thị bằng số Neural trong mạng, giá trị của các cạnh chính là trọng số liên kết Neural.
Ví dụ xây dựng một mạng Neural đơn giản:
Đầu vào: Cho :
Mạng Neural có số lớp (với số lớp>=1).
Mỗi lớp có số Neural trong một lớp (số Neural>=1).
Trọng số w liên kiết Neural ngẫu nhiên trong khoảng (-a,a).
Đầu ra: Mạng Neural nhân tạo.
Kiểu dữ liệu: chọn lưu dữ kiểu mảng :
int số_lớp;
int số_Neural[số_lớp];
float w[i][j][k]; với 1<=i<=số lớp, 1<=j,k<=số Neural.
17
Mạng Neural và ứng dụng của mạng Neural trong lĩnh vực CNTT CH1301085
Thuật toán.
Bước 1: Chọn lớp i=1 là lớp bắt đầu
Bước 2: Chọn lớp i là lớp hiện thời.
Bước 3 : Tại lớp đang xét i , xét Neural thứ j .
Bước 4: Thực hiện khởi tạo ngẫu nhiên trọng số kết nối với Neural k của lớp i-1
trong khoảng (-a,a).
w(i,j,k)=random(-a,a)
Bước 5: Nếu k <= số Neural[i-1] quay lại “Bước 4”, ngược lại thực hiện “Bước 6”.
Bước 6: Nếu j<= số Neural[i] quay lại “Bước 3”, ngược lại thực hiện “Bước 7”.
Bước 7: Nếu i<=số lớp quay lại “Bước 3”. ngược lại kết thúc.
II.5. Huấn luyện mạng Neural
II.5.1. Các quy tắc học
Quy tắc học là một thủ tục sửa đổi trọng số và độ lệch của mạng.( Thủ tục này còn
được gọi là thuật toán huấn luyện). Thủ tục này sẽ huấn luyện mạng để nó có thể thực
hiên một số nhiệm vụ mà ta mong muốn. Yêu cầu chính trong vấn đề này là cần có một
cơ chế điều chỉnh trọng số thích hợp.
Giả sử chúng ta có một tập các đầu vào P={p
1
,p
2
, , p
Q
}
Đối với học có giám sát, chúng ta biết được tập các đầu ra T={ t
1
,t
2
, , t
Q
} có
nghĩa là xác định được hàm
f : P →T, f(p
i
)= t
j
, i = 1 n
Bây giờ với p
’
∉ P, cần phải tìm f(p
’
) = ? Đối với học không có giám sát, chúng ta
cần tìm ra hàm
f: P→ N, f(p
i
) = f(p
i
II.5.2. Các thuật toán huấn luyện
II.5.2.1. Thuật toán mạng Neural một lớp
Xét trường hợp perceptron sử dụng hàm kích hoạt Ngưỡng cứng đối xứng
(Hardlims):
≤−
>+
=
∑
∑
=
=
d
i
ii
d
i
ii
twv
twv
output
1
1
,1
i
ii
d
i
ii
wvsign
wv
wv
output
0
0
0
0,1
0,1
(1.2)
Thuật toán:
Thuật toán học của perceptron hay mạng Neural một lớp gồm 3 bước chính:
Bước 1: Khởi tạo:
Khởi tạo trọng số w (0 hoặc ngẫu nhiên).
Chọn tốc độ học α
Bước 2 : Học
20
Mạng Neural và ứng dụng của mạng Neural trong lĩnh vực CNTT CH1301085
Với mỗi mẫu (x,t) trong tập học.
Tính y=f(x, w).
Nếu y khác t thay đổi vectơ trọng số w với:
w = w – α*x nếu y > t
w = w + α*x nếu y < t
Bước 3: lặp lại bước 2 cho tất cả các mẫu.
Nhận xét:
o Mẫu đầu ra t
(q)
=[t
1
,t
2
, t
S
]
T
( S là số đầu ra ).
Đầu ra thực tế của mạng là a
(q)
=[a
1
,a
2
, ,a
S
]
T
:
a
(q)
i
= f(w
i
T
p
(q)
rồi truyền ngược từ lớp ra trở lại các
lớp trước nhằm mục đích cho các lớp tự cập nhật trọng số theo các thông tin phản hồi đó.
Thuật toán này có thể áp dụng với mạng có số lớp bất kỳ. Xét mạng truyền thẳng
với M lớp, m=1,2, ,M. Đặt net
m
i
và a
m
i
lần lượt là đầu vào và đầu ra của Neural thứ i
trong lớp m. Mạng có R đầu vào và S đầu ra. Ký hiệu w
ij
m
là trọng số liên kết giữa
Neural thứ j lớp m-1 với Neural thứ i lớp m.
Input: Tập mẫu học {p
(q)
,t
(q)
} trong đó ta thêm vào mỗi vectơ p
(q)
một phần tử biểu
diễn độ lệch p
R+1
= -1.
Bước 1: Khởi tạo. Chọn
η
>0 và E
max
. Khởi tạo các trọng số bằng các giá trị ngẫu
Bước 4: Tính sai số
Tính giá trị sai số và các tín hiệu sai số
δ
m
i
cho lớp ra.
E =
2
1
∑
=
S
i 1
(t
i
(q)
- a
i
M
)
2
+ E
δ
i
M
= ( t
i
(q)
- a
i
m-1
) = f ( ∑
j
m
w
ij
δ
i
m
) m= M, M-1, …, 2.
Bước 6: Kiểm tra xem tất cả các mẫu học đã được học hay chưa. Nếu q< Q thì
q=q+1, chuyển đến bước 1. Ngược lại thì chuyển đến bước 6.
Bước 7: Kiểm tra xem tổng sai số E hiện tại có chấp nhận được hay không. Nếu E <
E
max
thì đã học xong, kết thúc quá trình huấn luyện. Ngược lại, đặt E=0, q=1, bắt đầu
vòng huấn luyện mới bằng các chuyển về bước 1
Đánh giá:
Mạng Neural nhiều lớp truyền thẳng là cách biểu diễn các đối tượng dựa trên các
giá trị thuộc tính của chúng tương đối hiệu quả, tuy rằng chưa vét cạn hết mọi khía cạnh
khác nhau về đối tượng đó. Cách tiếp cận mạng loại này tỏ ra khá hiệu quả khi các quan
sát ( tín hiệu vào) có miền giá trị liên tục. Do vậy, có thể xem là tốt hơn so vưói những
cách tiếp cận truyền thông dựa trên logic mệnh đề và cây quyết định.
Theo lý thuyết của Hornik thì mạng nhiều lớp được coi là các bộ xấp xỉ vạn năng.
Những sự không thành công của các ứng dụng là do sự học không đầy đủ, không có đủ
số Neural ẩn, thiếu một mối quan hệ tất định giữa đầu vào và đầu ra. Cũng theo lý thuyết
này thì một mạng chỉ cần có một lớp ẩn là đủ. Nhưng nếu chỉ có một lớp ẩn thì có thể đòi
hỏi số lượng Neural trong lớp đó lớn đến mức phi thực tế, do vậy để giảm số lượng
Neural có thể phải dùng biện pháp chia thành nhiều lớp. Với các ứng dụng thực tế thì các
mạng có một lớp tỏ ra không đủ ổn định, tuy vậy cũng cần có hai lớp ẩn là đủ.