- 40 -
NÂNG CAO HIỂU QUẢ MẠNG NEURAL BẰNG THUẬT TOÁN DI TRUYỀN
TRONG HỆ THỐNG CHUẨN ĐOÁN BỆNH UNG THƯ
Sinh viên: Vũ Quốc Huy Người hướng dẫn:
MSV: 0122266 ThS.Trần Thị Minh Châu
Email: Nguyễn Hà Nam (Korea)
Giới thiệu
Thế giới phát triền và cũng đối mặt với nhiều
những hiểm họa về bệnh tật. Mong muốn của mọi
người trên thế giới là có thể đoán biết được bệnh
của mình sớm nhất có thể được. Ngày nay với sự
phát triển của công nghệ thông tin và công nghệ
sinh học, chúng ta đang có trong tay một kho dữ
liệu về các loại bệnh, và các đặc điểm liên quan
tới bệnh đó. Vậy chúng ta có thể đoán biết được
bệnh của mình dựa vào tình trạng sức khỏe hiện
tại không? Trong bài này tôi sẽ đưa ra phương
pháp chuẩn đoán bệnh ung thư dựa vào kho dữ
liệu hồ sơ bệnh nhân từ trước tới nay. Phương
pháp chuẩn đoán này được thực hiện nhờ sự kết
hợp của hai thuật toán: mạng neural và di truyền.
Chúng ta cũng sẽ so sánh kết quả với một số
phương pháp khác để thấy được ưu điểm và
nhược điểm của phương pháp. Trong bài này
chúng ta sẽ được tìm hiểu các thuật toán được áp
dụng rộng rãi trong lĩnh vực khai phá dữ liệu
(data mining). Đây cũng có thể là tiền đề cho các
chương trình chuẩn đoán các loại bệnh khác.
1. Cơ sở lý thuyết
1.1. Thu
ật toán K-Mean
Nói đơn giản K-mean là một thuật toán để phân
loại hay nhóm các đối tượng dựa vào thuộc tính
hay đặc điểm vào K nhóm khác nhau. K là một số
nguyên dương.
Ví dụ: giả sử ta có 4 đối tượng, mỗi đối tượng có
2 thuộc tính
Đối tượng TT1(X):
weight
index
TT2(Y):
pH
Medicine A 1 1
Medicine B 2 1
Medicine C 4 3
Medicine D 5 4
Trước khi thực hiện phân chia các đối tượng
thành 2 nhóm, ta phải giải quyết việc xác định đối
tượng nào sẽ thuộc về nhóm 1, đối tượng nào
thuộc về nhóm 2.
Tư tưởng của thuật toán K-mean có thể tóm tắt
như sau: Coi mỗi nhóm có một giá trị “trọng
tâm”. Sau đó với mỗi một phần tử mới ta sẽ tính
tổng bình phương “khoảng cách” giữa phần từ đó
với giá trị trọng tâm của mỗi nhóm, phần tử sẽ
thuộc về nhóm nào nếu giá trị tính được là nhỏ
nhất.
Ở đây khoảng cách giữa hai phần tử được tính
theo công thức Euclidean
()
∑
=
−=
n
k
jkikij
xxd
1
2
Trong đó x
i
, x
j
là các đặc điểm của 2 phần tử i, j.
1.2. Thuật toán di truyền
Thuật toán di truyền, cũng như các thuật toán tiến
hóa nói chung, hình thành dựa trên quan niệm cho
rằng, quá trình tiến hóa tự nhiên là hoàn hảo nhất,
hợp lý nhất và tự nó đã mang tính tối ưu. Quan
niệm này có thể được xem như là một tiên đề
đúng, không chứng minh được, nhưng phù hợp
với thực tế khách quan. Quá trình tiến hóa thể
hiển tính tối ưu
ở chỗ, thế hệ sau bao giờ cũng tốt
hơn, phát triển hơn, hoàn thiện hơn thế hệ trước.
Tiến hóa tự nhiên được duy trì nhờ hai quá trình
cơ bản: sinh sản và chọn lọc tự nhiên. Xuyên suốt
quá trình tiến hóa tự nhiên, các thế hệ mới luôn
- 41 -
được sinh ra để bổ sung và thay thế thế hệ cũ. Cá
thể nào phát triển hơn, thích ứng hơn với môi
trường sẽ tồn tại, cá thể nào không thích ứng với
môi trường sẽ bị đào thải. Sự thay đổi môi trường
là động lực thúc đẩy quá trình tiến hóa. Ngược lại,
tiến hóa cũng tác động trở lại góp phần làm thay
đổi môi trường.
Thuật toán chung của thuật giải di truyền
Bắt đầu
t=0;
Khởi tạo P(t);
Tính độ thích nghi cho các cá
thể thuộc P(t);
Khi (điều kiện dừng chưa thoả)
lặp
t = t+1;
Tái sinh P′(t) từ P(t);
Lai Q(t) từ P(t-1);
Đột biến R(t) từ P(t-1);
Chọn lọc P(t) từ P(t-1) υ Q(t)
υ R(t) υ P(t);
Hết lặp
Kết thúc.
1.3. Mạng neural (Neural Network)
Mạng neural là tên gọi của một mạng nối các
phần tử lại với nhau. Các phần tử này gọi là các
neural do chúng được sáng tạo bắt nguồn từ việc
nghiên cứu hệ thống thần kinh sinh vật. Nói cách
khác, mạng neural là một sự cố gắng nhằm tạo ra
các máy móc hoạt động giống với cách hoạt động
của bộ não con người bằng cách sử dụng các phần
tử ho
ạt động giống như các dây thần kinh sinh
vật.
Trong mạng neural, Perceptron là loại mạng được
biết đến nhiều nhất và dễ hiểu nhất, nhưng nó chỉ
giải quyết được lớp các bài toán đơn giản, lớp các
bài toán phân tách tuyến tính. Để giải quyết các
bài toán phức tạp hơn thì chúng ta sử dụng
Perceptron đa tầng, thông thường dùng đến ba
tầng: tầng vào, tầng ẩn, tầng ra.
2. Đề xuất ph
ương án
Bài toán của chúng tôi là từ một cơ sở dữ liệu các
bệnh nhân được khám nghiệm từ trước tới nay,
bây giờ có một bệnh nhân mới chúng ta phải
chuẩn đoán xem bệnh nhân đó liệu có mắc bệnh
hay không? Công việc này có thể đơn thuần áp
dụng một trong hai thuật toán K-mean hoặc là
mạng neural. Cả hai thuật toán này sẽ được “tập
luyện” với các dữ liệu có sẵn để có thể đáp ứng,
đưa ra chuẩn đoán với dữ liệu vào mới. Công việc
“tập luyện” ở đây chính là quá trình học của hệ
thống. Thuật toán K-mean đại diện cho phương
pháp học “không giám sát”. Mạng neural đại diện
cho phương pháp học giám sát. Tuy nhiên trong
thực tế áp dụng thì hai phương pháp này không
hiểu quả, do vậy trong bài này tôi đưa ra một
phương pháp mới kết hợp sức mạnh của hai thuật
toán mạng neural và thu
ật toán di truyền để nâng
cao hiệu quả trong quá trình chuẩn đoán.
Có nhiều cách để áp dụng thuật toán di truyền vào
mạng neural, nhưng trong bài tôi chọn theo hướng
sử dụng thuật toán di truyền để xác định số neural
trong lớp ẩn của mạng neural. Với cách này
chúng ta sẽ thấy kết quả được cải thiện rất đáng
kể.
3. Kết luận
Trong bài này tôi chỉ đưa ra cách áp dụng thuật
toán di truyền vào mạ
ng neural bằng cách xác
định số neural trong lớp ẩn của mạng. Tuy nhiên
chúng ta có thể áp dụng thuật toán di truyền để
xác định trọng số cho mạng, hay xác định cấu trúc
của mạng, hoặc xác định tỉ lệ “học” của mạng.
Mỗi cách áp dụng đều có những điểm yếu điểm
mạnh riêng. Bên cạnh đó để quá trình chuẩn đoán
bệnh hiệu quả thì dữ liệu
để cho hệ thống “học”
cũng khá quan trọng, do vậy cũng cần có sự kết
hợp chặt chẽ giữa công nghệ thông tin và sinh
học.
Tài liệu tham khảo
[1] Richard O. Duda, Peter E. Hart, David G.
Stock,
Pattern Classification
, Wiley
[2] Mitchell Melanie,
An Introduction to Genetic
Algorithms
, MIT Press
[3] Jame A. Freeman, David M. Skapura,
Neural
Networks - Algorithms Applications
Programming
, Addison Wesley.