6. BỐ CỤC LUẬN VĂN
2.2. MẠNG TRUYỀN THẲNG MỘT LỚP
2.2.1. Mạng perceptron một lớp
Mạng perceptron một lớp do Rosenblatt đề xuất năm 1960 [14,17] là mạng nơ-ron truyền thẳng chỉ một lớp vào và một lớp ra không có lớp ẩn. Trên mỗi lớp này có thể có một hoặc nhiều nơ-ron. Mô hình mạng nơ-ron của Rosenblatt sử dụng hàm ngƣỡng đóng vai trò là hàm chuyển. Do đó, tổng của các tín hiệu vào lớn hơn giá trị ngƣỡng thì giá trị đầu ra của nơ-ron sẽ là 1, còn trái lại sẽ là 0.
(2.7) với neti wijxj là tổng các giá trị vào có trọng số của nơ-ron i, trong đó
wijlà trọng số liên kết từ nơ-ron j tới nơ-ron i , xj là đầu vào từ nơ-ron j, và θ là ngƣỡng của nơ-ron i. Việc huấn luyện mạng dựa trên phƣơng pháp học có giám sát với tập mẫu học là {(x(k), t(k))}, k= 1,2, …, p. Nhƣ hình 2.4 một mạng truyền thẳng
với t(k) = [t1(k), t2(k), …, tn(k)]T là véc tơ đầu ra mong muốn, tƣơng ứng với vec tơ đầu vào x(k) = [x1(k), x2(k), …, xm(k)]T và kết quả hiện thời là y(k) = [y1(k), y2(k), …, yn(k)]T (với m là số đầu vào, n là số đầu ra và p là số mẫu dùng cho việc học)
2.2.2. Quá trình học của mạng truyền thẳng một lớp
Với mỗi mẫu học {(x(k), t(k))}, k= 1,2, …, p các bƣớc đƣợc thực hiện [14][17]:
Bƣớc 1:
Tính giá trị y(k) theo công thức 2.8
1 ( ) (w ( )) ( w (k)) m T i i ij j j y k g x k g x với i=1,2,…,n; k=1,2,…,p (2.8) Bƣớc 2:
Xác định sai số ei tại nơ-ron i: ei = ti – yi, trong đó tilà giá trị đầu ra mong muốn và yilà giá trị đầu ra tính toán tại nơ-ron thứ i.
Bƣớc 3:
Tính ∆wij là số gia của trọng số wij (trọng số liên kết giữa đầu vào j tới nơ- ron i) theo công thức 2.9
∆wij =ηeixjtrong đó η là tốc độ học (0<η<1). (2.9)
Bƣớc 4:
Hiệu chỉnh wij(t+1) = wij(t) + ∆wij =wij(t) +ηδi(t)xj(t) trong đó wij(t+1) là trọng số sau khi điều chỉnh ở lần học tại thời điểm t.
Sau quá trình học, đầu ra tính toán đƣợc y(k) sẽ bằng đầu ra với mẫu học t(k)
thảo phƣơng trình (2.10) 1 ( ) (w ( )) ( w (k)) ( ) m T i i ij j i j y k g x k g x t k với i=1,2,…,n; k=1,2,…,p (2.10)
2.3. MẠNG TRUYỀN THẲNG NHIỀU LỚP 2.3.1. Mạng perceptron nhiều lớp 2.3.1. Mạng perceptron nhiều lớp
Mạng perceptron nhiều lớp (MLP) [4] còn đƣợc gọi là mạng truyền thẳng nhiều lớp là sự mở rộng của mô hình mạng perceptron với sự bổ sung thêm những lớp ẩn và các nơ-ron trong các lớp ẩn này có hàm chuyển (hàm kích hoạt) dạng phi tuyến. Mạng MLP có một lớp ẩn là mạng nơ-ron nhân tạo đƣợc sử dụng phổ biến nhất, nó có thể xấp xỉ các hàm liên tục đƣợc định nghĩa trên một miền có giới hạn cũng nhƣ những hàm là tập hợp hữu hạn của các điểm rời rạc.
2.3.2. Thuật toán học theo phƣơng pháp lan truyền ngƣợc sai số [6]
Thuật toán học lan truyền ngƣợc (truyền lỗi) do Rumelhart và cộng sự đề xuất [11] là một trong số những kết quả nghiên cứu quan trọng nhất đối với sự phát triển của mạng nơ-ron nhân tạo. Thuật toán này đƣợc áp dụng cho mạng truyền thẳng nhiều lớp trong đó các nơ-ron có thể sử dụng các hàm chuyển có các dạng khác nhau. Thuật toán sử dụng một tập các mẫu gồm các cặp vào - ra để huấn luyện mạng. Hình 2.6 mô tả một ví dụ của quá trình huấn luyện mạng truyền thẳng có nhiều lớp. Mạng nơ-ron đƣợc xét có m nơ-ron ở lớp vào, q nơ-ron trong lớp ẩn và n
nơ-ron ở lớp ra. Đƣờng kẻ liền thể hiện luồng tín hiệu đƣợc truyền thuận từ đầu vào tới đầu ra còn các đƣờng kẻ nét đứt thể hiện luồng tín hiệu lỗi đƣợc truyền ngƣợc trở lại từ đầu ra. Trọng số của liên kết từ nơ-ron j của lớp vào tới nơ-ron s của lớp ẩn ký hiệu là vsj và trọng số của kết nối từ nơ-ron h của lớp ẩn tới nơ-ron i của lớp ra ký hiệu là wis
Hình 2.6. Lan truyền tín hiệu theo phương pháp lan truyền ngược [6]
Với mỗi cặp vào - ra (( ),t(k)) thuật toán lan truyền ngƣợc sai số thực hiện hai giai đoạn sau [14][17]:
Lan truyền thuận, mẫu vào x(k) đƣợc truyền từ lớp vào đến lớp ra, có kết quả ra tính toán đƣợc là y(k).
Lan truyền ngƣợc, tín hiệu lỗi đƣợc tính toán từ sự khác nhau giữa kết quả ra mong muốn t(k) với kết quả ra tính toán y(k) sẽ đƣợc lan truyền ngƣợc lại từ lớp ra đến các lớp trƣớc để điều chỉnh các trọng số của mạng. Phƣơng trình điều chỉnh trọng số đối với lớp bất kỳ trong phƣơng pháp lan truyền ngƣợc có dạng nhƣ sau:
i _ _
wij xj output ixinput j
(2.11)
Trong đó out_i là đầu ra của nơ-ron i và in_j là đầu vào của nơ-ron j.
2.3.3. Huấn luyện mạng theo thuật toán lan truyền ngƣợc [6]
Một mạng nơ-ron truyền thẳng có m đầu vào và n đầu ra, L lớp, l=1,2,…,L, và gọi neti và yi là tín hiệu vào và ra của nơ-ron thứ i trong lớp l. Đặt wijllà trọng số của liên kết từ nơ-ron thứ j trong lớp l-1 tới nơ-ron thứ i trong lớp l. Đầu vào, tập các cặp mẫu học {𝑥( ), 𝑡( )}, = 1,2, … , 𝑝 và vectơ ngƣỡng 𝑥𝑚+1( ) = −1.
Bƣớc 1:
Bƣớc 2:
Thực hiện quá trình lặp cho việc huấn luyện mạng, sử dụng mẫu học thứ k.
Tại lớp vào (l=1) với mọi i ta có: yi( )i y1i x ki( ).
Bƣớc 3:
Lan truyền tín hiệu từ lớp vào tới lớp ra l đƣợc xác định: ( ) ( ) ( ) ( 1) ij ( ) w l l l l i i i j y g net g y (2.12) Bƣớc 4: Xác định tín hiệu lỗi ( )L i tại lớp ra nhƣ sau: 2 1 1 ( ( ) ) 2 n L i i i E t k y E ; i( )L ( ( )t ki yi( )L ) '(g neti( )L ) (2.13) Bƣớc 5:
Lan truyền ngƣợc lỗi, để điều chỉnh các trọng số và tính toán các tín hiệu lỗi ( 1)l i e cho các lớp trƣớc w(l)ij i( )i yi(l1) ; w (ij( )l k 1) w ( )ij( )l k ( )ijl (2.14) ( 1) ( 1) ( ) ( ) ij '( ) w l l l l i i j j g net ; l=L, L-1,…,2 (2.15) Bƣớc 6:
Kiểm tra điều kiện lặp if ( ≥ 𝑝) then goto Bước 7
else begin k=k+1; Goto Bước 2 end;
Bƣớc 7:
Kiểm tra lỗi tổng cộng hiện thời chấp nhận đƣợc chƣa? If (E<Emax) then
{kết thúc quá trình học và đƣa ra bộ trọng số cuối cùng}
else begin E=0; k=1; Goto Bước 2 {để bắt đầu một lần học tiếp}; End;
Mỗi lần toàn bộ tập mẫu học được lan truyền qua mạng được gọi là một vòng huấn luyện. Số vòng huấn luyện phụ thuộc vào từng trường hợp cụ thể và sự khởi tạo ban đầu. Có trường hợp thuật toán phải sau hàng chục nghìn vòng huấn luyện mới hội tụ tới lời giải. Nếu tham số khởi tạo không phù hợp có thể làm cho quá trình học không đạt kết quả mong muốn.
2.3.4. Một số vấn đề khi sử dụng mạng MLP [4]
Mạng nơ-ron perceptron nhiều lớp là loại mạng nơ-ron được sử dụng trong nhiều ứng dụng thực tế. Tuy nhiên, để mạng có thểđưa ra kết quả tốt, chúng ta cần quan tâm đến một số vấn đề có ảnh hưởng khá quan trọng đến hiệu quả làm việc của nó bao gồm: vấn đề chuẩn hoá số liệu đầu vào, vấn đề học chưa đủ và học quá của mạng, vấn đề lựa chọn một cấu trúc mạng phù hợp với bài toán.
2.3.4.1. Vấn đề chuẩn hóa số liệu đầu ra
Mạng MLP thường sử dụng hàm chuyển là hàm sigmoid có dạng như sau:
Hình 2.7. Hàm sigmoid g x( ) 1/ (1= +e-x)
Với dạng hàm này, giá trị ở đầu ra của mỗi nơ-ron nằm trong phạm vi khoảng (0,1) và nó đạt các giá trị bão hoà (xấp xỉ 0 hay 1) khi |x| lớn. Do đó, khi đầu vào của mạng có giá trị tuyệt đối lớn thì ta cần chuẩn hoá nó về khoảng có giá trị nhỏ, nếu không thì các nơ-ron tại các lớp ẩn ngay ban đầu đã có thể đạt giá trị bão hoà và quá trình học của mạng không đạt kết quả mong muốn. Với dạng hàm như trên thì giá trịđầu vào của mạng thường được chuẩn hoá về khoảng thuộc đoạn [-3, 3]. Mặt khác, do tín hiệu đầu ra của nơ-ron nằm trong khoảng giá trị (0,1) nên các giá trị đầu ra thực tế trong các mẫu học cũng cần chuẩn hoá về khoảng giá trị này để có thể dùng cho quá trình luyện mạng. Do vậy trong quá trình tính toán, để
có các giá trị thực tế ở đầu ra của mạng chúng ta cần phải chuyển các giá trị trong khoảng (0,1) về miền các giá trị thực tế.
2.3.4.2. Vấn đề học chưa đủ và học quá thuộc của mạng
Vấn đề mấu chốt khi xây dựng một mạng nơ-ron nhân tạo là làm thế nào mạng có khả năng tổng quát hoá cao để đưa ra kết quả tốt cả với những trường hợp đầu vào của mạng không nằm trong tập mẫu đã dùng để luyện mạng. Giống như các mô hình hồi quy phi tuyến khác, đối với mạng nơ-ron nhân tạo ta cũng phải giải quyết hai vấn đề là ANN học chưa đủ (underfitting) và học quá (overfitting). Khi mạng có cấu trúc (số nút ẩn và liên kết) cũng như số lần học chưa đủ so với nhu cầu của bài toán thì sẽ dẫn tới tình trạng mạng không đủ khả năng mô tả gần đúng mối quan hệ tương quan giữa đầu vào và đầu ra của quá trình cần dự báo và dẫn tới học chưa đủ. Trái lại, nếu mạng quá phức tạp (quá nhiều nút ẩn và quá nhiều tham số) và được học “quá khít” đối với các mẫu dùng để luyện mạng thì có thể dẫn tới tình trạng mạng học cả thành phần nhiễu lẫn trong các mẫu đó, đây là tình trạng “học quá thuộc” của mạng. Vấn đề nêu trên có thể làm cho nhiều loại mạng nơ-ron, đặc biệt là mạng MLP có thể có những trường hợp cho kết quả dựđoán rất sai lệch với thực tế.
Một số giải pháp cho vấn đề học quá của mạng:
- Sử dụng tập số liệu có tính đại diện tốt để luyện mạng: Đây được xem là một cách khá tốt để tránh hiện tượng overfitting. Khi tập mẫu dùng để luyện mạng thể hiện được nhiều trạng thái có thể xẩy ra của quá trình cần nghiên cứu thì sau khi học mạng sẽ có khả năng tổng quát hoá tương đối tốt từ tập dữ liệu đó và sẽ không chịu ảnh hưởng nhiều của hiện tượng overfitting. Ngoài ra một số biện pháp dưới đây cũng có thể góp phần quan trọng giúp khắc phục hiện tượng overfitting của mạng.
- Lựa chọn cấu trúc mô hình phù hợp: Việc lựa chọn mô hình của mạng (số lớp ẩn, số nơ-ron trên mỗi lớp ẩn) có ảnh hưởng quan trọng đến hiện tượng học chưa đủ (underfitting) và học quá (overfitting) của mạng. Mạng có hai nút ẩn có khả
năng tổng quát hoá tốt nhất (tuy không chính xác hoàn toàn với các mẫu nhưng nó tạo nên giáng điệu gần với hàm cần xấp xỉ nhất và nó đã không quá khít với nhiễu của mẫu học). Các mạng có độ phức tạp hơn (10 nút ẩn, 50 nút ẩn) tuy nó có thể học khá chính xác các mẫu được sử dụng nhưng chính điều này lại làm cho nó học quá nhiều cả thành phần nhiễu nên khả năng tổng quát hoá giảm và dẫn tới hiện tượng học quá (overfitting).
Giải pháp dừng học đúng lúc để tránh hiện tượng học quá của mạng như sau: - Tập mẫu được chia làm hai phần: một phần dùng để luyện mạng và phần còn lại để kiểm thử.
- Sử dụng các giá trị khởi tạo nhỏ.
- Sử dụng hằng số tốc độ học có giá trị thấp.
- Tính toán sự thay đổi lỗi kiểm thử trong quá trình luyện mạng. - Dừng học khi thấy lỗi kiểm thử bắt đầu tăng.
2.4. KẾT CHƯƠNG 2
Với đặc trưng của mạng nơ-ron nhân tạo nhưđã nêu trong chương này, mạng nơ-ron nhân tạo có khả năng học và là một hệ thống gồm nhiều phần tử xử lý đơn giản cùng hoạt động xử lý song song. Với tính năng này, cho phép nó có thể được áp dụng để giải các bài toán từđơn giản đến phức tạp. Đặc biệt là bài toán phân lớp, đây làloại bài toán này đòi hỏi giải quyết vấn đề phân loại các đối tượng quan sát được thành các nhóm dựa trên các đặc điểm của các nhóm đối tượng đó. Đồng thời là dạng bài toán cơ sở của rất nhiều bài toán trong thực tế như: nhận dạng chữ, tiếng nói, phân loại gen, phân loại chất lượng sản phẩm,…Do đó, mạng nơ-ron perceptron một lớp là thuật toán được lựa chọn để cài đặt ứng dụng trong việc nhận dạng thẻ BHYT sẽđược trình bày ở chương tiếp theo.
CHƢƠNG 3
ỨNG DỤNG NHẬN DẠNG THẺ BHYT
3.1. BÀI TOÁN NHẬN DẠNG THẺ BẢO HIỂM Y TẾ
Cùng với sự thúc đẩy của quá trình tin học hóa trong lĩnh vực y tế, đầu tháng 7 năm 2016, Bảo hiểm xã hội Việt Nam đã triển khai việc cấp phát thẻ BHYT theo cấu trúc mã thẻ mới có mã vạch 2 chiều cho tất cả các đối tƣợng tham gia BHYT dựa trên những quy định tại Quyết định số 1351/QĐ-BHXH ngày 16 tháng 11 năm 2015 của Bảo hiểm xã hội Việt Nam về việc ban hành mã số ghi trên thẻ bảo hiểm y tế; việc sử dụng thẻ BHYT mã vạch 2 chiều đã mang lại nhiều tiện ích cho các cơ sở khám chữa bệnh và ngƣời dân tham gia BHYT khi đi khám chữa bệnh, đảm bảo sự chính xác thông tin trong việc cấp phát thẻ BHYT cho bệnh nhân. Tuy nhiên trong quá trình triển khai còn gặp nhiều những khó khăn nhƣ: việc đầu tƣ cơ sở vật chất chƣa đồng bộ, cần có lộ trình và kinh phí, trình độ tin học, công nghệ thông tin của các nhân viên ở các cơ sở khám chữa bệnh vẫn chƣa theo kịp đà phát triển của công nghệ…, một vấn đề khó khăn nữa là một số thẻ mới phát hành đã bị mờ, mực in bị bong tróc, không rõ thông tin, máy không đọc đƣợc mã vạch…gây khó khăn cho ngƣời dân lẫn các cơ sở khám chữa bệnh, nhiều ngƣời ở xa đến, không khám bảo hiểm đƣợc phải tự chi trả hoặc phải quay về xin cấp lại thẻ, mất thời gian, khó khăn và tốn kém cho ngƣời bệnh.
Nhận dạng thẻ BHYT là một chƣơng trình hỗ trợ trong hệ thống quản lý BHYT, mô tả bài toán nhƣ sau:
- Đầu vào: Dữ liệu là các file ảnh dạng văn bản có định dạng *.JPG trải qua các giai đoạn tiền xử lý: xử lý ảnh nhiễu, phân ngƣỡng, lọc ảnh..., phân tích ảnh và tách ký tự theo từng vùng sau đó đƣợc huấn huyện dựa trên mạng nơ-ron nhân tạo và nhận dạng đƣa ra kết quả.
- Đầu ra: là một file text chứa các ký tự tƣơng ứng với mã thẻ BHYT mà chƣơng trình mong muốn. Số ký tự đầu ra mong muốn phải tƣơng ứng với số ký tự ảnh đầu vào cần huấn luyện.
Dựa trên kết quả mã thẻ BHYT đã đƣợc nhận dạng, giúp ngƣời quản lý có thể dùng để tìm kiếm, trích xuất đƣợc thông tin về bệnh nhân một cách nhanh chóng, chính xác, hạn chế tình trạng trùng thẻ BHYT, đảm bảo cho việc thanh toán BHYT chính xác đạt hiệu quả cao, đồng thời có thể theo dõi xuyên suốt quá trình điều trị bệnh của bệnh nhân.
3.2. CƠ SỞ DỮ LIỆU THỰC NGHIỆM
Tập dữ liệu mẫu dùng để huấn luyện chứa 28 file ảnh, với kích thƣớc 16×20, định dạng *.JPG, tƣơng ứng với từng ký tự: gồm các ký tự số từ 0 đến 9 và các ký tự chữ cái gồm A, B, C, D, E, G, H, K, L, M, N, O, Q, S, T, V, X, Y.
A B C D X Y 0 1 2 3 5 8 9
Hình 3.1. Một số mẫu ký tự
Tập dữ liệu dùng để kiểm thử chứa: các file ảnh của thẻ BHYT, định dạng *.JPG. Mỗi file ảnh đƣợc lƣu với tên theo định dạng:
<Mã thẻ BHYT>.JPG
Ví dụ: CH4480408600006.JPG
3.3. MÔ HÌNH NHẬN DẠNG THẺ BHYT
Hình 3.3. Mô hình nhận dạng thẻ BHYT
3.3.1. Thẻ BHYT
Cấu trúc thẻ BHYT đƣợc thực hiện theo Quyết định số 1351/QĐ-BHXH ngày 16 tháng 11 năm 2015 của Bảo hiểm xã hội Việt Nam về việc ban hành mã số ghi trên thẻ bảo hiểm y tế.
Hình 3.4. Thẻ bảo hiểm y tế
1. Ô thứ nhất 02 ký tự: Gồm 2 chữ cái là mã đối tƣợng tham gia BHYT gồm các nhóm, loại đối tƣợng, có ký hiệu:
+ DN: Ngƣời lao động làm việc trong doanh nghiệp thành lập hoạt động theo Luật Doanh nghiệp, Luật đầu tƣ;
+ HX: Ngƣời lao động làm việc trong các hợp tác xã, liên hiệp các hợp tác xã