Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.28 MB, 59 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b><small>Nhận diện số viết tay đóng vai trị quan trọng trong q trình học và cơng việc của lập trình viên. Việc này bắt nguồn từ sự kết nối sâu sắc giữa việc viết tay và lập trình. Lập trình viên thường phải viết code, ghi chú và vẽ sơ đồ trước khi thực hiện cơng việc trên máy tính. Tính cơ bản và cần thiết </small></b>
<b><small>của việc này là không thể phủ nhận, bởi nhận diện số viết tay giúp tự động hóa và tối ưu hóa q trình chuyển đổi từ ý tưởng trên giấy thành mã </small></b>
<b><small>nguồn hoạt động trên máy tính. Ngồi ra, cơng nghệ này cịn có khả năng ứng dụng rộng rãi trong nhiều lĩnh vực lập trình, từ việc phát triển ứng dụng di động đến xử lý ngôn ngữ tự nhiên và học máy. Việc nghiên cứu và phát triển trong lĩnh vực này cũng khơi dậy sự sáng tạo và đổi mới, mở ra cơ hội cho việc tạo ra các sản phẩm và dịch vụ cơng nghệ mới, mang lại lợi ích to lớn cho cả lập trình viên và cộng đồng người dùng</small></b>
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><b>MƠ HÌNH TỔNG QT CỦA MỘT HỆ </b>
<b>NHẬN DẠNG SỐ VIẾT TAY</b>
<b>TỔNG QUAN VỀ TRÍCH CHỌN ĐẶC TRƯNG VÀ MỘT SỐ </b>
<b>PHƯƠNG PHÁP TRÍCH CHỌN ĐẶC </b>
<b>TRƯNG TRONG NHẬN DẠNG CHỮ </b>
<b>MƠ HÌNH MẠNG NEURAL TÍCH CHẬP</b>
<b>NHẬN DẠNG CHỮ SỐ VIẾT TAY VỚI </b>
<b>MẠNG NƠ RON TÍCH CHẬP</b>
<b>Nhị phân hóa ảnh</b>
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8"><b> Nhiễu đốm và nhiễu vệt.</b>
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9"><b>Chuẩn hóa kích thước ảnh các ký tự “A” và “P”</b>
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><b>(a) Ảnh gốc</b>
<b>(b) Ảnh sau khi được làm trơn biên</b>
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11"> Sau đây là một số phương pháp biến đổi và khai triển chuỗi thường được áp dụng trong lĩnh vực nhận dạng số:
• Biến đổi Fourier• Biến đổi Wavelet
• Phương pháp mơ men
• Khai triển Karhunent-Loeve
Một tín hiệu liên tục thường chứa nhiều thông tin và chúng có thể sử dụng làm các đặc trưng cho mục đích phân lớp.
Một số biến dạng khác như các phép dịch chuyển và phép quay là bất biến dưới các phép biến đổi toàn cục và khai triển chuỗi.
Phần 2
Phần 2
CNN là viết tắt của "Convolutional Neural Network", một loại mơ hình máy học được thiết kế đặc biệt để xử lý và nhận diện dữ liệu không gian như ảnh và video. Một số ứng dụng như nhận diện vật thể, nhận diện khuôn mặt, phân loại ảnh, và nhiều nhiệm vụ khác liên quan đến xử lý ảnh.
CNN chỉ đơn giản gồm một vài layer của convolution kết hợp với các hàm kích hoạt phi tuyến như ReLU hay tanh để tạo ra thông tin trừu tượng hơn cho các layer tiếp theo.
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">Mơ hình phân lớp với CNN
Mơ hình mạng neural truyền thống
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">Mạng neural tích chập là một dạng của mạng neural đa tầng, mỗi tầng thuộc một trong 3 dạng: tầng tích chập (C - convolution), lấy mẫu con (S - subsampling), kết nối đầy đủ (F - full connection) như hình sau.
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">Tích chập được sử dụng đầu tiên trong xử lý tín hiệu số (Signal processing). Nhờ vào nguyên lý biến đổi thông tin, các nhà khoa học đã áp dụng kĩ thuật này vào xử lý ảnh và video số. Để dễ hình dung, ta có thể xem tích chập như một cửa sổ trượt (sliding window) áp đặt lên một ma trận. Ta có thể theo dõi cơ chế của tích chập qua hình minh họa bên.
Minh họa tích chập
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">Ảnh được phát hiện biên sau khi chập
Ảnh mờ sau khi tích chập
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">Minh họa kết quả tích chập trong kỹ thuật blur
</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">Minh họa kết quả tích chập trong kỹ thuật Sharpen
</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">Minh họa kết quả tích chập trong kỹ thuật Outline
</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">- Qua quá trình nghiên cứu về bộ não: Bộ não con người bao gồm khoảng 1011 neuron tham gia vào khoảng 1015 kết nối trên các đường truyền.
- Những thành phần chính trong cấu trúc
<b>của một neural trong bộ não con người: </b>
<b>Soma , Dendrite , Axon , Synapse.</b>
Mô hình neural sinh học
</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">Mạng Nơron nhân tạo được thiết kế giống một số tính chất của mạng nơron sinh học. Để mô phỏng các tế bào thần kinh và các khớp nối thần kinh của bộ não con người, trong mạng nơron nhân tạo cũng có các thành phần có vai trò tương tự các thành phần trong nơron thần kinh.
Hai thành phần chính cấu tạo nên mạng nơron nhân tạo là các nơron và các synapse.
Weight Wi
<small>Mơ hình Neural nhân tạo ở mức đơn giản</small>
</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">Là một hệ thống bao gồm nhiều phần tử xử lý đơn giản tựa như Neural thần kinh của não người, hoạt động song song và được nối với nhau bởi các liên kết Neural. Mỗi liên kết kèm theo một trọng số nào đó, đặc trưng cho tính kích hoạt hoặc ức chế giữa các Neural.
</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">Các Neural trong cùng một tầng có hàm chuyển là không giống nhau, ta có thể định nghĩa các Neural trong một tầng có hàm chuyển khác nhau bằng cách kết hợp song song hai mạng Neural giống ở trên. Cả hai sẽ có đầu vào giống nhau và mỗi mạng sản xuất ra vài đầu ra.
</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">Ma trận trọng số cho các phần tử trong vector đầu vào W:
Mơ hình mạng một tầng
</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">Mơ hình mạng đa tầng
</div><span class="text_page_counter">Trang 41</span><div class="page_container" data-page="41">Mạng Neural nhân tạo phỏng theo việc xử lý thông tin của bộ não người, do vậy đặc trưng cơ bản của mạng là có khả năng học, khả năng tái tạo các hình ảnh và dữ liệu khi đã học. Trong trạng thái học thông tin được lan truyền theo hai chiều nhiều lần để học các trọng số. Có 3 kiểu học chính, mỗi kiểu học tương ứng với một nhiệm vụ học trừu tượng. Đó là học có giám sát (có mẫu), học không giám sát và học tăng cường.
</div><span class="text_page_counter">Trang 43</span><div class="page_container" data-page="43">Huấn luyện mạng Neural nhiều lớp sử dụng thuật toán Lan truyền ngược gồm hai quá trình:
+ Q trình truyền tuyến tính+ Q trình truyền ngược
</div><span class="text_page_counter">Trang 47</span><div class="page_container" data-page="47"><i>Mạng liệt: Xảy ra khi những trọng số được điều chỉnh tới những giá trị rất lớn. </i>
Giá trị hiệu chỉnh trọng số gần 0, và quá trình huấn luyện có thể đi đến một trạng thái dừng ảo.
<i>Cực tiểu địa phương: Bởi vì sự hạ độ dốc, mạng có thể bị “mắc bẫy” tại một </i>
cực tiểu địa phương khi có nhiều cực tiểu thấp hơn gần bên cạnh.
Thơng qua ngơn ngữ Python, ta sử dụng thư viện Tensorflow để xây dựng một mơ hình mạng nơ-ron tích chập và áp dụng mơ hình này để giải bài toán nhận dạng chữ số với tập dữ liệu MNIST.
Tập dữ liệu MNIST, tập hợp các bức ảnh nhị phân về các chữ số viết tay đã được chuẩn hoá và chuyển về kích cỡ 32x32. Dữ liệu được chia thành 60000 mẫu được đưa vào CNN để huấn luyện và 10000 mẫu để kiểm nghiệm độ chính xác của CNN. MNIST là một trong những bộ dữ liệu phổ biến dùng để thử nghiệm các thuật toán về Machine Learning.
<b>Tập dữ liệu MNIST: </b>
</div><span class="text_page_counter">Trang 50</span><div class="page_container" data-page="50">Hình chiếu minh hoạ của tập dữ liệu trong
</div><span class="text_page_counter">Trang 51</span><div class="page_container" data-page="51">Mơ hình dự đốn sử dụng thuật tốn Adam để huấn luyện là viết tắt của "adaptive moment estimation" để huấn luyện. Thuật toán Adam kết hợp cả hai ý tưởng từ thuật toán tối ưu hóa gradient khác là RMSprop và momentum.
Trong quá trình huấn luyện, Adam tính tốn các gradient của hàm mất mát theo các trọng số của mạng, sau đó cập nhật các trọng số dựa trên các giá trị gradient đó và một số siêu tham số như tốc độ học (learning rate), beta1, beta2 và epsilon.
Điều này làm cho quá trình huấn luyện nhanh chóng và hiệu quả hơn đối với nhiều loại mơ hình và tập dữ liệu.
</div><span class="text_page_counter">Trang 52</span><div class="page_container" data-page="52">Trong mô hình này, lớp Dense được sử dụng với hàm kích hoạt softmax để xác định xác suất của các lớp đầu ra.
Thuật toán softmax là một phương pháp chuẩn hóa giá trị đầu ra thành một phân phối xác suất, đảm bảo rằng tổng các giá trị xác suất là 1. Cụ thể, softmax được sử dụng để chuyển đổi các giá trị đầu ra từ lớp kết nối đầy đủ thành xác suất tương ứng với mỗi lớp đầu ra.
Cơng thức tính tốn của softmax cho một vector đầu vào là
</div><span class="text_page_counter">Trang 53</span><div class="page_container" data-page="53">Gradient Descent là một thuật toán hữu ích và phổ biến trong việc tìm cực trị phương của một hàm số. Ý tưởng chính của thuật tốn là thực hiện vòng lặp để xấp xỉ cực trị của bài toán, các điểm đang xét của Gradient Descent sẽ dần tiến đến các điểm cực trị địa phương của hàm số, thay vì phải tìm cách giải phương trình đạo hàm riêng.
</div><span class="text_page_counter">Trang 54</span><div class="page_container" data-page="54">categorical_crossentropy được sử dụng để đo lường sự khác biệt giữa các phân phối xác suất dự đốn của mơ hình và phân phối xác suất thực tế của các lớp. Nó tính tốn mất mát bằng cách tính tổng của các logarit của xác suất dự đoán đúng.
Trong trường hợp của bạn, dữ liệu đích đã được mã hóa one-hot, vì vậy bạn sử dụng categorical_crossentropy để đo lường sự tương đồng giữa các phân phối xác suất được dự đoán và thực tế.
</div><span class="text_page_counter">Trang 55</span><div class="page_container" data-page="55">Bước 3: Thu gọn ảnh về kích thước 28X28
Bước 4: So sánh với mẫu đã học để cho kết quả.
</div><span class="text_page_counter">Trang 57</span><div class="page_container" data-page="57">Mơ hình có hiệu suất là 99,84 % với tập huấn luyện và 99,08% với tập kiểm tra vì vậy ta thấy được mơ hình có khả năng học tốt với tập dữ liệu mnist
</div><span class="text_page_counter">Trang 58</span><div class="page_container" data-page="58"><small>Đầu tiên nhóm em xin cảm ơn cô Nguyễn Nhựt Quỳnh đã hướng dẫn nhóm em trong suốt q trình học mơn này.</small>
<small>Nhóm em hy vọng rằng kiến thức này sẽ là nền tảng tốt để nhóm em có thể áp dụng vào những dự án tương lai. Mặc dù chỉ là một đề tài nhỏ, nhưng nó giúp nhóm em thấy được sự quan trọng của việc học và thử nghiệm trong lĩnh vực học máy. Cảm ơn thầy/cô và các bạn đã hỗ trợ và giúp đỡ, và nhóm em hi vọng sẽ còn nhiều cơ hội học hỏi và thử thách mới trong tương lai.</small>
</div><span class="text_page_counter">Trang 59</span><div class="page_container" data-page="59">