Deep Learning là một trong những mảng phát triển nhất của Machine Learning. Có thể hiểu đơn giản Deep Learning là mạng nơron đa lớp có cấu trúc đặc biệt. Recurrent Neural Network RNN (mạng nơron hồi quy), Convolutional Neural Network CNN (mạng nơ ron tíchchập) hay Deep Convolutional Generative Adversarial Networks DCGANs (mạng đối kháng sinh mẫu tích chập đa lớp) đều là các thuật toán trong Deep Learning ỨNG DỤNG MẠNG CNN TRONG VIỆC TÌM KIẾM HÌNH ẢNH Để có thể dự đoán ảnh chim hay không, chúng ta cần viết một chương trình dự đoán ảnh chim (mà chúng ta sẽ để cập chi tiêt trong mục 4). Nhưng để thực sự biết sự hiệu quả của mạng, ta cần kiểm nghiệm với rất rất nhiều ảnh. Dữ liệu tôi tạo ra có 15.000 ảnh kiểm chứng, và kết quả cho độ chính xác 95%. Các công cụ 4.1.1. Python 3.5 (with pip) 4.1.2. Cuda 8.0 (for GPU) 4.1.3. CIFAR10 data sets 4.1.4. CaltechUCSD Birds200–2011 data sets 4.1.5. Framework TFLearn 4.1.6. Framework TensorFlow (của Google) Cài đặt, thiết lập hệ thống 1.Download và cài đặt Python3.5 with pip 2.Upgrade pip (Bắt buộc) (pip18.1py2.py3noneany.whl) python m pip install upgrade pip 3.Download và cài Cuda 8.0 (optionalHỗ trợ GPU) 4.Cài đặt tensorflow (tensorflow1.11.0cp35cp35mwin_amd64.whl) python m pip install tensorflow python m pip install tensorflowgpu (Nếu đã cài Cuda) python m pip install tensorflow1.11.0cp35cp35mwin_amd64.whl 5.Download và cài đặt curses 2.2 python m pip install curses2.2+utf8cp35cp35mwin_amd64.whl 6.Cài đặt tflearn (tflearn0.3.2.tar.gz) python m pip install tflearn ...
Trang 1MỤC LỤC
Trang 2BẢNG CÁC TỪ VIẾT TẮT STT Từ viết tắt Từ Tiếng Anh Giải thích
1 CNN Convolutional Neural Network Mạng Nơ ron tích-chập
Deep Convolutional Generative Adversarial Networks
Mạng tích-chập đối kháng sinh mẫu đa lớp
3 DNN Deep Neural Network Mạng Nơ-ron đa lớp
4 FCNN Fully-connected Neural
Network
Mạng Nơ-ron kết nối hoàn chỉnh
5 MNIST Modified National Institute
of Standards and Technology Tập chữ viết tay MNIST
7 RNN Recurrent Neural Network Mạng Nơ-ron hồi quy
Trang 3ĐẶT VẤN ĐỀ
1 Lý do chọn đề tài
Mạng nơ-ron nhân tạo (Neural Network - NN) là một mô hình lập trình tiêntiến lấy cảm hứng từ mạng nơ-ron thần kinh Kết hợp với các kĩ thuật học sâu(Deep Learning), NN đang trở thành một công cụ rất mạnh mẽ mang lại hiệu quảtốt nhất cho nhiều bài toán khó như nhận dạng ảnh, giọng nói hay xử lý ngôn ngữ
tự nhiên
Mạng Nơ-ron truyền thống (Neural Network) hoạt động không thực sự hiệuquả với dữ liệu đầu vào là hình ảnh Trong các mạng nơ-ron truyền thống tất cả cácđầu vào và cả đầu ra là độc lập với nhau, tức là chúng không liên kết thành chuỗivới nhau Nhưng các mô hình này không phù hợp trong rất nhiều bài toán; Ví dụ,nếu muốn đoán từ tiếp theo có thể xuất hiện trong một câu thì ta cũng cần biết các
từ trước đó xuất hiện lần lượt thế nào
Convolutional Neural Network (CNNs hay Convnets – Mạng nơ-ron tíchchập) là một trong những mô hình Deep Learning tiên tiến giúp cho chúng ta xâydựng được những hệ thống thông minh với độ chính xác cao CNN được lấy cảmhứng từ vỏ não thị giác, mỗi khi chúng ta nhìn thấy một cái gì đó, một loạt các lớp
tế bào thần kinh được kích hoạt, và mỗi lớp thần kinh sẽ phát hiện một tập hợp cácđặc trưng như đường thẳng, cạnh, màu sắc, v.v… của đối tượng lớp thần kinh càngcao sẽ phát hiện các đặc trưng phức tạp hơn để nhận ra những gì chúng ta đã thấy
Mạng nơ-ron tích chập cho phép các máy tính có khả năng “nhìn” và “phântích” bằng cách đưa nó qua nhiều layer với một bộ lọc tích chập để sau cùng cóđược điểm số nhận dạng đối tượng một cách tốt nhất
CNN ngày nay được sử dụng rộng rãi trong các bài toán nhận dạng hình ảnh,
xử lý ngôn ngữ tự nhiên và các bài toán dự đoán Với sự phát triển phần cứngmạnh mẽ cho phép tính toán song song hàng tỉ phép tính, tạo tiền đề cho Mạng nơ-
Trang 4tuệ nhân tạo nói chung và xử lý ảnh nói riêng Hiện nay như hệ thống xử lý ảnh lớnnhư Facebook, Google hay Amazon đã đưa vào sản phẩm của mình những chứcnăng thông minh như nhận diện khuôn mặt người dùng, phát triển xe hơi tự lái haydrone giao hàng tự động.
2 Phạm vi nghiên cứu
Trong phạm vi nghiên cứu của Báo cáo này, chúng tôi trình bày về các vấn
đề về mạng nơ-ron, gồm: khái niệm của mạng nơ-ron nhân tạo, lịch sử phát triển,các mô hình mạng và phương pháp xây dựng cũng như huấn luyện mạng Trong đó
đi sâu vào nghiên cứu hoạt động của Mạng nơ-ron tích chập và ứng dụng của mạngcho một bài toán cụ thể là bài toán nhận dạng đối tượng
Báo cáo này cũng trình bày một thực nghiệm cho ứng dụng mạng nơ-rontích chập cho việc tìm kiếm hình ảnh chứa chim
Trang 5Ví dụ như thuật toán phân loại dữ liệu, nó có thể đưa dữ liệu vào các nhómkhác nhau Thuật toán phân loại được sử dụng để nhận dạng số viết tay cũng có thểđược sử dụng để phân loại email rác và email thường mà không thay đổi một dòng
mã nào Cùng một thuật toán nhưng được đào tạo trên tập dữ liệu khác nhau vớimục đích khác nhau
Thuật toán Machine Learning này là một hộp đen có thể được sử dụng lạicho nhiều vấn đề phân loại khác nhau Machine Learning là một thuật ngữ baohàm rất nhiều thuật toán chung chung
Hai loại thuật toán Machine Learning
Thuật toán Machine Learning có hai loại chính: học có giám sát và họckhông giám sát Sự khác biệt tuy đơn giản nhưng thực sự quan trọng
Học có giám sát
Trong quá trình học có giám sát, bạn sẽ để cho máy tính tìm ra mối quan hệ
đó cho bạn Và một khi bạn biết những phép toán học nào là cần thiết để giải quyếtvấn đề cụ thể này, bạn có thể trả lời cho bất kỳ vấn đề nào khác cùng loại!
Học không giám sát
Học tập theo chế độ giám sát là những gì chúng ta sẽ tập trung cho phần cònlại của bài đăng này, nhưng đó không phải là vì học không giám sát không ít hữu
Trang 6các thuật toán này tốt hơn bởi vì nó có thể sử dụng mà không cần gắn nhãn dữ liệuvới câu trả lời chính xác.
Do đó, chúng ta cần điều chỉnh tất cả các trọng số để "lăn xuống" điểm cựctiểu đó Nếu chúng ta thay đổi trọng số từng tí một, theo chiều hướng về cực tiểu,thì cuối cùng, chúng ta sẽ tìm ra lời giải, mà không phải thử tất cả các trọng số cóthể như ý tưởng ban đầu
Trong môn Giải tích, chúng ta biết rằng: đạo hàm của hàm số cho ta biết hệ
số góc của một hàm số ở bất kì điểm nào Hay nói theo một cách khác, nó cho tabiết chiều mà ta cần đi để chạm tới cực tiểu
Chúng ta có thể thay đổi trọng số dần dần bằng cách trừ đi giá trị đạo hàmtừng phần của hàm mất mát đối với từng trọng số Lặp lại quá trình như vậy chotới khi chúng ta chạm tới cực tiểu và có giá trị tốt nhất của trọng số
Đó là giải thích ngắn gọn của phương pháp tìm trọng số với tên gọi là batchgradient descent - xuống dốc toàn cục
Khi chúng ta sử dụng thư viện để giải quyết vấn đề, tất cả những điều trên đãđược ẩn đi Dẫu sao thì, hiểu điều gì đang diễn ra vẫn sẽ rất có ích cho bạn
Trang 7Liệu học máy có thật sự giải quyết mọi vấn đề?
Khi bạn nhìn thấy những thuật toán học máy được áp dụng dễ dàng để giảiquyết các vấn đề rất phức tạp (như nhận diện chữ viết), bạn bắt đầu cảm thấy bạn
có thể sử dụng học máy để giải quyết bất kể vấn đề nào và nhận được câu trả lời,miễn là bạn có tập dữ liệu đủ lớn Chỉ cần đưa dữ liệu vào và bằng một cách nào
đó, máy tính đưa ra hàm số phù hợp với dữ liệu
Nhưng hãy nhớ rằng, học máy chỉ hiệu quả nếu vấn đề thực sự có thể giảiquyết bằng dữ liệu bạn đưa vào
Ví dụ, nếu bạn xây dựng mô hình dự đoán giá nhà dựa trên số giỏ cây ở mỗinhà, hàm số tìm được sẽ không thể áp dụng Không có bất kể mối liên hệ nào giữa
số giỏ cây và giá nhà Bạn chỉ có thể mô hình hóa mối quan hệ thực sự tồn tại giữacác đại lượng
1.2 Mạng nơ-ron thần kinh là gì?
Kết nối toàn bộ những gì đã mô tả ở trên ta có đồ thị kết hợp như sau:
Trang 8Mỗi nơ-ron sẽ chứa các giá trị đầu vào, áp dụng trọng số cho chúng và tínhtoán được kết quả đầu ra Bằng cách kết nối nhiều tầng nơ-ron với nhau, chúng ta
có thể mô hình hóa các chức năng phức tạp
Ý tưởng đơn giản trên có thể được diễn đạt lại theo cách sau:
- Chúng ta tạo nên những hàm dự đoán đơn giản, thực hiện tính toán bằngcách nhân giá trị mỗi nơ-ron với trọng số tương ứng của nó Mỗi hàm đơn giản nàyđược gọi là một tế bào thần kinh
- Kết nối nhiều tế bào thần kinh đơn giản lại với nhau, chúng ta xây đựngđược một mạng thần kinh để mô hình hóa nhiều bài toán phức tạp mà một tế bàothần kinh không làm được
Tư tưởng trên giống như bộ ghép hình LEGO Chúng ta không thể tạo môhình với chỉ 1 mảnh ghép, nhưng bằng cách kết hợp nhiều mảnh ghép với nhau, ta
có thể tạo nên robot, máy bay, xe tăng
Trang 9Tự động tạo văn bản mới
Cung cấp bộ nhớ cho mạng thần kinh (NN)
Mạng thần kinh trên luôn luôn trả về kết quả giống nhau với những tập dữliệu đầu vào giống nhau Nó không có bộ nhớ Trong thuật ngữ lập trình, đó là mộtthuật toán phi trạng thái
Trong nhiều trường hợp (giống như ước lượng giá trị ngôi nhà), đó chínhxác là điều bạn mong muốn Nhưng một việc mà loại mô hình này không thể làm
là đáp ứng với các mô hình dữ liệu theo thời gian
Ví dụ cho bạn một bàn phím và yêu cầu bạn viết một câu chuyện Nhưngtrước khi bạn bắt đầu, sẽ dự đoán ký tự đầu tiên bạn sẽ gõ Tôi nên đoán đó là chữgì?
Tôi có thể sử dụng kiến thức về tiếng Anh của mình để nâng cao tỉ lệ đoánđúng của tôi Ví dụ, bạn có thể chọn gõ một ký tự thông dụng Nếu tôi đã xem quanhững câu chuyện bạn viết trước đó, tôi có thể dựa trên xác suất những từ bạnthường sử dụng đầu câu chuyện để thu hẹp tập kết quả dự đoán hơn, và xây dựngmột mạng thần kinh để mô hình hóa khả năng bạn sẽ bắt đầu một lá thư với ký tựnào
Mô hình như sau:
Nhưng giờ hãy làm vấn đề này khó khăn hơn Làm sao để tôi có thể dự đoán
ký tự tiếp theo bạn sẽ gõ tại bất kỳ thời điểm nào trong câu chuyện của bạn Đâyquả là một vấn đề thú vị hơn nhiều
Trang 101.3 Deep Learning
Deep Learning là một trong những mảng phát triển nhất của MachineLearning Có thể hiểu đơn giản Deep Learning là mạng nơ-ron đa lớp có cấu trúcđặc biệt Recurrent Neural Network - RNN (mạng nơ-ron hồi quy), ConvolutionalNeural Network - CNN (mạng nơ ron tích-chập) hay Deep ConvolutionalGenerative Adversarial Networks - DCGANs (mạng đối kháng sinh mẫu tích chập
đa lớp) đều là các thuật toán trong Deep Learning
Ở mạng nơ-ron đa lớp thường, giá trị đầu ra của lớp này là đầu vào của lớptiếp theo, và các lần chạy mạng với các giá trị truyền vào độc lập với nhau Ởmạng RNN, mạng nơ-ron ở mỗi lần chạy được lưu trạng thái, và sử dụng ở lầnchạy tiếp theo Ở mạng CNN, các đặc trưng của giá trị truyền vào được trích lọcbằng chuỗi phương pháp như tích chập, giảm mẫu, kết nối mạng trước khi phânnhóm
1.4.1 Nhận diện vật thể cùng Deep Learning
Bạn có thể đã từng nhìn thấy đoạn hoạt hình nổi tiếng này trước đây Bứctranh mô tả ý tưởng: bất kỳ một đứa trẻ 3 tuổi nào cũng có thể nhận ra bức tranhcủa một chú chim, nhưng để nhận dạng vật thể với máy tính là một câu đố chonhững nhà khoa học máy tính giỏi nhất trong vòng 50 năm vừa qua
Trong khoảng vài năm gần đây, cuối cùng, chúng ta cũng đã tìm được mộtphương pháp thích hợp để nhận dạng vật thể sử dụng Deep Convolutional NeuralNetworks - mạng nơ-ron tích chập đa lớp Để hiểu hơn về thuật toán này, hãy cùngnhau viết chương trình nhận dạng chim từ ảnh
1.4.2 Bắt đầu từ Bài toán đơn giản
Trước khi chúng ta học cách nhận diện chim, hãy cùng nhau nhận diện số 8trong chữ số viết tay - một chương trình đơn giản hơn
Chúng ta đã biết mạng nơ-ron giải quyết các vấn đề phức tạp bằng cách kếtnối nhiều nơ-ron đơn giản Chúng ta có thể tạo ra mạng nơ-ron nhỏ, để dự đoán giánhà dựa trên số phòng ngủ nó có, độ rộng ngôi nhà, hay hàng xóm của ngôi nhà
Trang 11Chúng ta cũng biết ý tưởng của học máy là tái sử dụng các thuật toán với dữliệu khác nhau để giải quyết các vấn đề khác nhau Vì thế, hãy thay đổi mạng nơ-ron này để nhận diện ký tự viết tay, và một trường hợp đơn giản là nhận diện số 8.
Học máy chỉ chạy khi bạn có dữ liệu, càng nhiều càng tốt Vì thế, chúng tacần rất nhiều số 8 viết tay để bắt đầu May mắn là những nhà nghiên cứu đã tạo ratập chữ viết tay MNIST cho mục đích này MNIST cung cấp 60,000 ảnh với mỗiảnh 18x18 pixel Dưới đây là tập số 8 từ dữ liệu:
Trang 121.4.3 Mọi đặc trưng đều là số
Nếu chúng ta muốn xử lý dữ liệu bằng mạng nơ-ron, làm cách nào chúng ta
có thể truyền hình ảnh vào mạng?
Câu trả lời hóa ra cực kỳ đơn giản Dữ liệu đầu vào mà mạng nơ-ron cần là
số Đối với máy tính, tấm ảnh thực sự chỉ là mạng lưới với mỗi số sẽ đại diện chovùng tối của mỗi pixel:
Để truyền ảnh vào mạng nơ-ron, chúng ta chỉ cần coi 18x18 pixel ảnh là mộtmảng gồm 324 số:
Trang 13Để xử lý 324 điểm ảnh, chúng ta cần mở rộng mô hình mạng nơ-ron với 324nơ-ron đầu vào.
Chú ý rằng mạng nơ-ron của chúng ta cũng có 2 giá trị đầu ra (thay vì chỉmột) Đầu ra thứ nhất sẽ sự đoán khả năng một ảnh là số 8 và đầu ra thứ 2 sẽ dựđoán một ảnh không phải số 8 Bằng việc phân tách đầu ra cho từng vật thể tamuốn nhận dạng, chúng ta có thể sử dụng mạng nơ-ron để phân nhóm vật thể
Mạng nơ-ron hiện giờ đã lớn hơn rất nhiều so với lần trước đây (324 giá trịđầu vào thay vì chỉ 3) Nhưng bất kể máy tính hiện đại nào cũng có thể xử lý mạngnơ-ron cùng với hàng trăm nơ-ron một cách liên tục
Đây là tập dữ liệu đào tạo:
Trang 14Quá trình đào tạo có thể kéo dài vài phút trên laptop Khi quá trình kết thúc,mạng nơ-ron có thể nhận ra số 8 với độ chính xác khá cao.
1.4.4 Nhận diện hình ảnh
Thật hay là chỉ cần truyền giá trị pixel vào trong mạng nơ-ron để có thể nhậndiện hình ảnh! Machine Learning thật là thần kỳ phải không mọi người
Nhưng mọi chuyện không đơn giản như vậy
Đầu tiên, tin tốt là nhận diện số 8 thực sự hoạt động rất tốt trong những bứcảnh đơn giản, khi mà ký tự nằm ở chính giữa
Nhưng tin xấu là: việc nhận diện số 8 thất bại hoàn toàn khi mà ảnh bị lệchsang một phía Chỉ cần lệch 1 chút thôi cũng đủ để phá vỡ hệ thống:
Điều này bởi vì, dữ liệu đào tạo có tất cả các số 8 đều nằm chính giữa, vàmạng nơ-ron không có bất kỳ ý tưởng nào về việc số 8 bị lệch Mạng nơ-ron biếtmột và chỉ một cấu trúc đó mà thôi
Việc nhận diện một cấu trúc thực sự không hữu hiệu trong thực tế Vấn đềthực tế không bao giờ đơn giản và tinh gọn, vì thế chúng ta cần tìm ra cách đểkhiến mạng nơ-ron nhận diện bất cứ số 8 không hoàn hảo nào
1.4.5 Giải pháp 1: Tìm kiếm với cửa sổ trượt (Sliding Window)
Chúng ta tạo ra một chương trình tìm kiếm số 8 nằm chính giữa Liệu chúng
ta có thể quét tất cảcác ảnh số 8 có thể ở những vùng nhỏ hơn, từng vùng một, chotới khi chúng ta tìm ra
Trang 15Phương pháp này được gọi là tìm kiếm với cửa số trượt Đây là một giảipháp khiên cưỡng Nó chỉ đúng trong một số trường hợp giới hạn nhất định, nhưngkhông thực sự hiệu quả Bạn phải kiểm tra cùng một bước ảnh lặp đi lặp lại với cáckích thước khác nhau Và chắc chắn, chúng ta có thể làm tốt hơn điều đó.
1.4.6 Giải pháp 2: Nhiều dữ liệu hơn với một mạng lưới nhiều lớp
Khi chúng ta đào tạo mạng, dữ liệu hiển thị số 8 nằm ở vị trí chính giữa.Liệu chúng ta có thể đào tạo với nhiều dữ liệu hơn, bao gồm số 8 ở tất cả các vị trí
và các kích thước khác nhau
Chúng ta thậm chí không cần thu thập thêm dữ liệu mới, ta chỉ cần viết mộtđoạn mã để tạo ra những hình ảnh mới từ ảnh số 8 ban đầu với đầy đủ các vị trí vàkích thước khác nhau
Trang 16Sử dụng kĩ thuật này, chúng ta có thể dễ dàng tạo ra nguồn dữ liệu vô tận.Nhiều dữ liệu khiến vấn đề khó hơn cho mạng nơ-ron để giải quyết, nhưngchúng ta có thể mở rộng mạng luới bằng cách thêm nhiều lớp nơ-ron, giúp mạnghọc được những cấu trúc phức tạp hơn.
Chúng ta gọi đây là deep neural network (mạng nơ-ron đa lớp), bởi vì nóchứa nhiều lớp nơ-ron hơn mạng truyền thống
Ý tưởng này bắt đầu từ cuối nắm 1960s Nhưng đến gầy đây, việc đào tạomạng lưới lớn và phức tạp vẫn quá chậm để hữu ích do tính toán quá chậm Khichúng ta tìm ra thẻ đồ hoạ 3D (cho phép tính toán ma trận phức tạp cực nhanh),ứng dụng mạng nơ-ron đa lớp trở lên thiết thực hơn
2 NGHIÊN CỨU MÔ HÌNH CONVOLUTIONAL NEURAL NETWORKS 2.1 Mạng Convolutional Neural Network - (CNN - mạng nơ-ron tích chập)
Con người có cảm quan để biết rằng bức ảnh có tầng lớp hoặc cấu trúc từngvật thể Hãy nghĩ về bức ảnh sau:
Trang 17Bạn có thể ngay lập tức nhận ra cấu trúc bức ảnh:
- Có một đứa trẻ
- Đứa trẻ ngồi trên con ngựa nẩy
- Con thú (ngựa) nhún nằm trên mặt cỏ
- Mặt cỏ phủ trên mặt sân
Và quan trọng nhất là, chúng ta nhận diện được đứa trẻ ở bất cứ địa điểmnào, dù chúng ta không được đào tạo cách nhận diện đứa trẻ ở mọi địa điểm tồn tạitrên trái đất
Nhưng mạng nơ-ron hiện tại của chúng ta lại không thể làm điều đó Nónghĩ số 8 ở vị trí khác nhau là hoàn toàn khác biệt Nó không hiểu rằng việc dichuyển vật thể xung quanh bức ảnh không tạo ra sự sai khác Chúng ta cần tạo ramột mạng nơ-ron có thể hiểu được biến thể của số 8, dù số 8 xuất hiện ở vị trí nào
đi chăng nữa
Ý tưởng mạng nơ-ron tích chập ra đời, nhờ công nghiên cứu của cả các nhàkhoa học máy tính và những nhà di truyền học Thực tế, một số nhà khoa học đãtruyền dung dịch vào não bộ của mèo để xem mèo nhận diện hình ảnh như thế nào