Deep Learning là một chức năng của trí tuệ nhân tạo (AI), bắt chước cách bộ não con người hoạt động để xử lí dữ liệu, tạo ra các mẫu để sử dụng cho việc đưa ra quyết định. Vậy Deep Learning là gì? Bài viết này sẽ cung cấp những kiến thức cơ bản nhất về Deep Learning, ứng dụng của nó cũng như một số thuật toán và kỹ thuật phổ biến trong lĩnh vực này.
Nội dung
Deep Learning là gì?
Deep Learning (học sâu) có thể được xem là một lĩnh vực con của Machine Learning (học máy) – ở đó các máy tính sẽ học và cải thiện chính nó thông qua các thuật toán. Deep Learning được xây dựng dựa trên các khái niệm phức tạp hơn rất nhiều, chủ yếu hoạt động với các mạng nơ-ron nhân tạo để bắt chước khả năng tư duy và suy nghĩ của bộ não con người.
Thật ra các khái niệm liên quan đến mạng nơ-ron nhân tạo và Deep Learning đã xuất hiện từ khoảng những năm 1960, tuy nhiên nó lại bị giới hạn bởi khả năng tính toán và số lượng dữ liệu lúc bấy giờ. Trong những năm gần đây, những tiến bộ trong phân tích dữ liệu lớn (Big Data) đã cho phép ta tận dụng được tối đa khả năng của mạng nơ-ron nhân tạo.
Mạng nơ-ron nhân tạo chính là động lực chính để phát triển Deep Learning. Các mạng nơ-ron sâu (DNN) bao gồm nhiều lớp nơ-ron khác nhau, có khả năng thực hiện các tính toán có độ phức tạp rất cao. Deep Learning hiện đang phát triển rất nhanh và được xem là một trong những bước đột phá lớn nhất trong Machine Learning. Trong phần dưới đây, Vietnix sẽ làm rõ khái niệm Deep Learning là gì thông qua cơ chế hoạt động, ưu và nhược điểm của nó.
Deep Learning là một phương pháp của Machine Learning. Mạng nơ-ron nhân tạo trong Deep Learning được xây dựng để mô phỏng khả năng tư duy của bộ não con người.
Một mạng nơ-ron bao gồm nhiều lớp (layer) khác nhau, số lượng layer càng nhiều thì mạng sẽ càng “sâu”. Trong mỗi layer là các nút mạng (node) và được liên kết với những lớp liền kề khác. Mỗi kết nối giữa các node sẽ có một trọng số tương ứng, trọng số càng cao thì ảnh hưởng của kết nối này đến mạng nơ-ron càng lớn.
Mỗi nơ-ron sẽ có một hàm kích hoạt, về cơ bản thì có nhiệm vụ “chuẩn hoá” đầu ra từ nơ-ron này. Dữ liệu được người dùng đưa vào mạng nơ-ron sẽ đi qua tất cả layer và trả về kết quả ở layer cuối cùng, gọi là output layer.
Trong quá trình huấn luyện mô hình mạng nơ-ron, các trọng số sẽ được thay đổi và nhiệm vụ của mô hình là tìm ra bộ giá trị của trọng số sao cho phán đoán là tốt nhất.
Các hệ thống Deep Learning yêu cầu phần cứng phải rất mạnh để có thể xử lý được lượng dữ liệu lớn và thực hiện các phép tính phức tạp. Nhiều mô hình Deep Learning có thể mất nhiều tuần, thậm chí nhiều tháng để triển khai trên những phần cứng tiên tiến nhất hiện nay.
Ưu nhược điểm của Deep Learning
Dưới đây là một số ưu và nhược điểm của Deep Learning:
Ưu điểm
Deep Learning là một bước ngoặt to lớn trong lĩnh vực trí tuệ nhân tạo, cho phép khác nhà khoa học dữ liệu xây dựng nhiều mô hình có độ chính xác rất cao trong lĩnh vực nhận dạng ảnh, xử lý ngôn ngữ tự nhiên, xử lý giọng nói,… Một số ưu điểm vượt trội của Deep Learning gồm có:
- Kiến trúc mạng nơ-ron linh hoạt, có thể dễ dàng thay đổi để phù hợp với nhiều vấn đề khác nhau.
- Có khả năng giải quyết nhiều bài toán phức tạp với độ chính xác rất cao.
- Tính tự động hoá cao, có khả năng tự điều chỉnh và tự tối ưu.
- Có khả năng thực hiện tính toán song song, hiệu năng tốt, xử lý được lượng dữ liệu lớn.
Nhược điểm
Bên cạnh những ưu điểm, mặt khác, hiện nay Deep Learning vẫn còn nhiều khó khăn và hạn chế, chẳng hạn như:
- Cần có khối lượng dữ liệu rất lớn để tận dụng tối đa khả năng của Deep Learning.
- Chi phí tính toán cao vì phải xử lý nhiều mô hình phức tạp.
- Chưa có nền tảng lý thuyết mạnh mẽ để lựa chọn các công cụ tối ưu cho Deep Learning.
Deep Learning giải quyết những vấn đề gì?
Kiến trúc mạng nơ-ron trong Deep Learning được ứng dụng trong các công việc yêu cầu sức mạnh tính toán cao, xử lý nhiều dữ liệu và độ phức tạp lớn. Trong phần này, ta sẽ cùng tìm hiểu 5 ứng dụng thân thuộc nhất của Deep Learning trong đời sống hàng ngày:
Xe tự lái
Một trong những công nghệ mới và hấp dẫn nhất hiện nay là xe tự động lái, nó được xây dựng dựa trên các mạng nơ-ron cấp cao. Nói một cách đơn giản, các mô hình Deep Learning sẽ nhận diện các đối tượng ở môi trường xung quanh xe, tính toán khoảng cách giữa xe và các phương tiện khác, xác định vị trí làn đường, tín hiệu giao thông,… từ đó đưa ra được các quyết định tối ưu và nhanh chóng nhất. Một trong những hãng xe tiên phong trong việc sản xuất xe tự lái hiện nay là Tesla
Phân tích cảm xúc
Đây là lĩnh vực phân tích cảm xúc của con người thông qua việc xử lý ngôn ngữ tự nhiên, phân tích văn bản và thống kê. Các công ty có thể ứng dụng Deep Learning để hiểu và phán đoán cảm xúc của khách hàng dựa trên những đánh giá, bình luận, tweet,… từ đó đưa ra những chiến lược kinh doanh và marketing phù hợp với từng nhóm đối tượng.
Trợ lý ảo
Trợ lý ảo đang được ứng dụng rất nhiều trong đời sống hàng ngày, trong đó phổ biến gồm có chatbot, giảng viên online, Google Assistant, Siri, Cortana,… Các trợ lý ảo được xây dựng dựa trên Deep Learning với các thuật toán nhận diện văn bản, xử lý ngôn ngữ tự nhiên, nhận dạng giọng nói.
Mạng xã hội
Một số nền tảng mạng xã hội lớn như Twitter cũng ứng dụng các thuật toán Deep Learning để cải thiện các dịch vụ của mình. Cụ thể, những trang này sẽ phân tích một lượng lớn dữ liệu thông qua mạng nơ-ron nhân tạo để tìm hiểu về các tuỳ chọn của người dùng. Ngoài ra, Instagram cũng sử dụng Deep Learning để tránh các hành vi bạo lực trên không gian mạng, chặn các bình luận vi phạm, không phù hợp,…
Facebook cũng không nằm ngoài danh sách các mạng xã hội ứng dụng Deep Learning vào sản phẩm của mình. Các thuật toán mạng nơ-ron sâu được sử dụng để gợi ý trang, bạn bè, dịch vụ, nhân diện khuôn mặt,…
Chăm sóc sức khoẻ
Deep Learning cũng có đóng góp không nhỏ vào lĩnh vực y tế, trong đó phổ biến gồm có các mô hình dự đoán tình trạng bệnh, chẩn đoán ung thư, phân tích kết quả MRI, X-ray,…
Khi nào nên sử dụng Deep Learning?
Tiến sĩ Scott Clark, đồng sáng lập và CEO của SigOpt, cho rằng Deep Learning hiệu quả nhất đối với các dữ liệu không tuân theo một cấu trúc cụ thể. Một số ví dụ phổ biến gồm có văn bản, video, hình ảnh hay dữ liệu dạng thời gian. Các thuật toán Deep Learning có khả năng tự động xây dựng và khai thác các mẫu có trong dữ liệu để đưa ra được quyết định tối ưu. Tuy nhiên, việc này cần rất nhiều dữ liệu và tài nguyên tính toán để có được độ chính xác tốt nhất.
Mỗi mô hình mạng nơ-ron nhân tạo có thể bao gồm hàng trăm, thậm chí hàng triệu tham số khác nhau. Vì vậy việc tối ưu các tham số này đòi hỏi người xây dựng mô hình phải có kiến thức chuyên sâu và nhiều kinh nghiệm. Bên cạnh đó, các mạng nơ-ron nhân tạo sử dụng nhiều hàm phi tuyến có độ phức tạp cao nên việc hiểu và diễn giải các kết quả từ mô hình cũng là một thách thức lớn với các chuyên gia. Vì vậy, với những dự án yêu cầu nhiều tương tác và phản hồi từ con người thì Deep Learning không hẳn là một lựa chọn lý tưởng.
Có nên sử dụng Deep Learning thay cho Machine Learning?
Mặc dù có hiệu năng và độ chính xác vượt trội nhờ vào nhiều mô hình phức tạp và nguồn dữ liệu khổng lồ, Deep Learning không hẳn là lựa chọn duy nhất cho các bài toán trong lĩnh vực trí tuệ nhân tạo và học máy. Việc quyết định có nên ứng dụng Deep Learning hay không phụ thuộc phần lớn vào mục tiêu và chiến lược kinh doanh cụ thể, số lượng dữ liệu, tài nguyên,… Vậy những yếu tố nên cân nhắc trước khi quyết định sử dụng các mô hình Deep Learning là gì? Hãy cùng tìm hiểu tiếp ở trong phần dưới đây.
Độ phức tạp và mục tiêu của dự án
Một trong những lợi thế lớn nhất của Deep Learning chính là khả năng giải quyết các vấn đề phức tạp, phân tích và học được những mỗi quan hệ ẩn trong dữ liệu. Deep Learning đặc biệt hữu ích nếu dự án cần xử lý nhiều dữ liệu ở dạng phi cấu trúc, chẳng hạn như phân loại hình ảnh, xử lý ngôn ngữ tự nhiên, nhận diện giọng nói,…
Mặt khác, đối với những vấn đề có độ phức tạp vừa phải, không yêu cầu nặng về mặt tính toán, ít tài nguyên và dữ liệu,… thì các thuật toán Machine Learning sẽ là một lựa chọn hợp lý hơn.
Tài nguyên
Bùng nổ dữ liệu lớn trong những năm gần đây đã giúp việc xây dựng các mô hình Deep Learning trở nên dễ dàng hơn. Tuy nhiên, đây vẫn là một lĩnh vực vô cùng phức tạp và tốn kém. Vì phải xử lý lượng dữ liệu vô cùng lớn nên các mô hình Deep Learning thường rất nặng về mặt tài nguyên tính toán và GPU để có được hiệu năng tốt nhất.
Mặt khác, những thuật toán Machine Learning cổ điển chỉ cần một CPU và phần cứng vừa phải, tốc độ nhanh hơn và có thể dễ dàng thử nghiệm nhiều kỹ thuật, mô hình khác nhau mà không cần lo ngại về tài nguyên và thời gian tính toán.
Số lượng dữ liệu
Thuật toán Deep Learning có thể tìm ra được các mối quan hệ ẩn sâu trong những bộ dữ liệu. Tuy nhiên việc này cũng đồng nghĩa với lượng dữ liệu đầu vào (dữ liệu đã được gán nhãn) phải lớn hơn nhiều so với các thuật toán Machine Learning. Việc gán nhãn dữ liệu cũng yêu cầu nguồn lực và thời gian lớn, đặc biệt là trong lĩnh vực y tế phải yêu cầu chuyên môn cao mới có khả năng gán nhãn dữ liệu chính xác. Trong những trường hợp này, ta có thể nghĩ đến việc sử dụng các thuật toán Machine Learning cổ điển thay vì Deep Learning.
Các kỹ thuật Deep Learning
Có rất nhiều kỹ thuật và thuật toán Deep Learning khác nhau, từ đơn giản đến vô cùng phức tạp, có thể ứng dụng vào hầu hết các bài toán trong lĩnh vực trí tuệ nhân tạo hiện nay. Ở phần cuối của bài viết, ta sẽ tìm hiểu một số kỹ thuật Deep Learning phổ biến nhất hiện nay.
Mạng nơ-ron cổ điển
Kiến trúc cổ điển của mạng nơ-ron là mạng kết nối đầy đủ, thường được xác định bằng các perceptron đa lớp. (Perceptron là một thuật toán đơn giản, cho phép tìm một ranh giới siêu phẳng cho các bài toán phân lớp nhị phân). Mạng nơ-ron cổ điển được thiết kế bởi Fran Rosenblatt vào năm 1958, chủ yếu được sử dụng cho các bài toán phân lớp nhị phân. Có ba loại hàm thường được sử dụng trong mô hình này là:
- Hàm tuyến tính.
- Hàm phi tuyến: gồm có hàm sigmoid, hàm tanh và hàm ReLU (Rectified Linear Unit).
Kiến trúc mạng nơ-ron cổ điển tương đối đơn giản, phù hợp nhất với các bộ dữ liệu có dạng bảng hoặc những bài toán phân loại, hồi quy có đầu vào là giá trị thực.
Mạng nơ-ron tích chập (CNN)
Mạng nơ-ron tích chập (Convolutional Neural Network – CNN) là một kiến trúc Neural Network nhân tạo nâng cao, được xây dựng để giải quyết các bài toán phức tạp, đặc biệt là liên quan đến xử lý hình ảnh.
Tích chập là một khái niệm trong xử lý tín hiệu số nhằm biến đổi thông tin đầu vào qua một phép tích chập với bộ lọc, nhằm trả về đầu ra là một tín hiệu mới. Tín hiệu này sẽ giảm bớt những đặc trưng mà bộ lọc không quan tâm, giữ lại những đặc trưng chính và quan trọng nhất.
Bên cạnh input layer và output layer, mô hình CNN còn có thêm một sampling layer để giới hạn số lượng nơ-ron tham gia vào các layer tương ứng. Việc xây dựng mô hình trải qua ba giai đoạn chính:
- Quá trình tích chập (convolution): Thông qua các tích chập giữa ma trận đầu vào với bộ lọc để tạo thành các đơn vị trong một tầng mới. Quá trình này có thể diễn ra liên tục ở phần đầu của mạng và thường sử dụng kèm với hàm kích hoạt ReLU. Mục tiêu của tầng này là trích suất đặc trưng hai chiều.
- Quá trình tổng hợp (max pooling): Giảm kích thước khối ma trận đầu vào thông qua việc tìm ra 1 giá trị đại diện cho mỗi một vùng không gian mà bộ lọc đi qua sẽ không làm thay đổi các đường nét chính của bức ảnh nhưng lại giảm được kích thước của ảnh.
- Quá trình kết nối hoàn toàn (fully connected): Sau khi đã giảm kích thước đến một mức độ hợp lý, ma trận cần được trải phẳng (flatten) thành một vector và sử dụng các kết nối hoàn toàn giữa các tầng. Tầng kết nối hoàn toàn cuối cùng (fully connected layer) sẽ có số lượng đơn vị bằng với số lớp.
Dựa vào những đặc điểm của mình, các ứng dụng phổ biến nhất của mạng CNN gồm có: Nhận diện, phân tích và phân khúc hình ảnh, phân tích video, xử lý ngôn ngữ tự nhiên,…
Mạng nơ-ron hồi quy (RNN)
Recurrent Neural Network (RNN) là một thuật toán nổi tiếng trong lĩnh vực xử lý ngôn ngữ tự nhiên. Trong các mô hình mạng nơ-ron truyền thống, đầu vào và đầu ra độc lập với nhau, tuy nhiên RNN thực hiện cùng một tác vụ cho tất cả phần tử của một chuỗi với đầu ra phụ thuộc vào cả các phép tính trước đó. Vì vậy mạng RNN có khả năng nhớ các thông tin được tính toán trước đó.
Có hai thiết kế chính của RNN:
- LSTM (Long Short-Term Memory): Được dùng để dự đoán dữ liệu dạng chuỗi thời gian, có khả năng bỏ đi hoặc thêm các thông tin cần thiết, được điều chỉnh bởi các nhóm được gọi là cổng (gate): Input, Output và Forget.
- Gated RNN: Cũng là một thiết kế phổ biến trong lĩnh vực dự đoán dữ liệu của chuỗi thời gian, có hai cổng là Update và Reset.
Các dạng bài toán RNN:
- One to one: Chỉ có một input kết nối với một output duy nhất, chẳng hạn như các bài toán phân loại hình ảnh.
- One to many: Một input liên kết với nhiều chuỗi output, phổ biến là các bài toán đặt caption cho ảnh.
- Many to One: Nhiều input nhưng chỉ có output, ví dụ phổ biến là bài toán phân loại cảm xúc.
- Many to many: Nhiều input và nhiều output, chẳng hạn như phân loại video.
Mạng sinh đối nghịch (GAN)
Generative Adversarial Networks (GAN) là lớp mô hình có mục tiêu tạo ra dữ liệu giả giống với thật, tên của mạng được dựa trên kiến trúc gồm hai mạng có mục tiêu đối nghịch nhau: Generator và Discriminator. Trong đó Generator học cách sinh dữ liệu giả để lừa mô hình Discriminator, còn Discriminator lại học cách phân biệt giữa dữ liệu giả và dữ liệu thật. Thông qua quá trình huấn luyện thì cả hai mô hình này đều cùng cải thiện được khả năng của mình.
Một số ứng dụng phổ biến của GAN là: Tạo khuôn mặt người, thay đổi độ tuổi khuôn mặt, sinh ảnh vật thể, tạo nhân vật hoạt hình,…
Boltzmann machine
Đây là một mô hình mạng không có hướng xác định, vì vậy các node của mạng này được liên kết với nhau thành một hình tròn. Dựa vào kiến trúc này, máy Boltzmann (Boltzmann machine) thường được sử dụng để tạo ra các tham số cho mô hình. Các ứng dụng phổ biến nhất của mô hình là: giám sát hệ thống, xây dựng hệ thống khuyến nghị nhị phân,…
Học tăng cường sâu
Deep Reinforcement Learning là quá trình mà các tác tử (agent) tương tác với môi trường để thay đổi trạng thái của chính nó. Các tác tử có thể quan sát và thực hiện những hành động phù hợp, từ đó giúp mạng đạt được mục tiêu.
Mô hình mạng này gồm một input layer, output layer và nhiều hidden layer khác, trong đó trạng thái của môi trường chính là input layer. Mô hình sẽ huấn luyện liên tục để dự đoán điểm đạt được sau mỗi hành động được thực hiện trong từng trạng thái nhất định.
Mô hình học tăng cường sâu được ứng dụng chủ yếu trong các game cờ vua, poker, xe tự lái, robot,…
Autoencoder
Autoencoder là một trong những kỹ thuật Deep Learning phổ biến nhất hiện nay, có khả năng học các biểu diễn của dữ liệu đầu vào mà không cần nhãn, hay nói cách khác thì mạng này có khả năng học không giám sát (unsupervised learning).
Một số loại autoencoder chính gồm có:
- Sparse (thưa): Số lượng hidden layer lớn hơn số lượng input layer nhằm hạn chế hiện tượng quá khớp (overfitting). Phương pháp này giới hạn hàm mất mát và ngăn không cho autoencoder lạm dụng tất cả các node có trong mạng.
- Denoising (lọc nhiễu): Một phiên bản input được chuyển thành 0 ngẫu nhiên.
- Contractive: Bổ sung hệ số phạt vào hàm mất mát để hạn chế overfitting trong trường hợp số lượng hidden layer lớn hơn input layer.
- Stacked: Xếp chồng nhiều hidden layer lên nhau để tạo thành một mạng autoencoder.
Các ứng dụng phổ biến: Phát hiện đặc trưng, xây dựng hệ thống khuyến nghị, bổ sung đặc trưng cho tập dữ liệu,…
Backpropagation
Lan truyền ngược (backpropagation) là một trong những kỹ thuật quan trọng nhất của mạng nơ-ron. Về cơ bản thì đây là phương pháp giúp tính gradient ngược từ layer cuối cùng đến layer đầu tiên của mạng. Trước hết, mạng sẽ phân tích các tham số rồi điều chỉnh thông qua hàm mất mát. Tiếp theo, giá trị lỗi được tính toán sẽ lan truyền ngược lại để điều chỉnh các tham số cho phù hợp.
Gradient Descent
Trong Deep Learning và tối ưu hoá, ta thường phải tìm giá trị nhỏ nhất (hoặc lớn nhất) của một hàm số nào đó. Tuy nhiên việc tìm các điểm tối ưu toàn cục của hàm mất mát thường rất phức tạp, đôi khi là bất khả thi. Do đó ta có thể cố gắng tìm những điểm cực tiểu địa phương và có thể xem là nghiệm cần tìm của bài toán.
Các điểm cực tiểu địa phương về mặt toán học là nghiệm học phương trình đạo hàm bằng 0, tuy nhiên việc giải phương trình đạo hàm bằng 0 gần như là không thể trong Machine Learning hay Deep Learning. Một cách tiếp cận phổ biến là xuất phát từ một điểm mà ta coi là gần với nghiệm của bài toán, sau đó dùng một phép lặp để tiến dần đến điểm cần tìm. Phương pháp này được gọi là hạ gradient và được sử dụng vô cùng phổ biến trong tối ưu.
Với các mạng nơ-ron hiện đại, nhờ vào thuật toán lan truyền ngược mà gradient descent có thể nhanh hơn hàng triệu lần so với cách truyền thống.
Câu hỏi thường gặp
Deep Learning và AI có giống nhau không?
Trí tuệ nhân tạo là khái niệm tạo ra những cỗ máy thông minh. Mặt khác, Deep Learning là một tập hợp con của trí tuệ nhân tạo giúp bạn xây dựng các ứng dụng dựa trên AI.
Deep Learning là một tập hợp con của Machine Learning sử dụng khối lượng lớn dữ liệu và các thuật toán phức tạp để phát triển một mô hình.
Deep Learning được sử dụng như thế nào trong thế giới thực?
Ngày nay, phương pháp Deep Learning cũng đang được sử dụng trong
các chương trình dịch tự động, chuyển đổi văn bản từ ngôn ngữ này sang ngôn ngữ khác mà không yêu cầu người dùng nhập các từ hoặc cụm từ đã dịch trước đó theo cách thủ công.
Lời kết
Trong bài viết này ta đã tìm hiểu Deep Learning là gì, các ứng dụng phổ biến và những trường hợp nên sử dụng Deep Learning. Phần cuối của bài viết cũng đã khái quát một số kỹ thuật phổ biến và đặc biệt quan trọng trong Deep Learning. Đây không hẳn là một lĩnh vực quá mới mẻ, nhưng sự bùng nổ dữ liệu trong nhiều năm gần đây đã giúp các nhà khoa học tận dụng được tối đa khả năng của các mô hình mạng nơ-ron nhân tạo, tạo tiền đề cho việc giải quyết nhiều bài toán tưởng chừng như là bất khả thi trong nhiều năm về trước. Hy vọng bài viết trên đã cung cấp cho bạn những kiến thức hữu ích. Nếu còn điều gì thắc mắc hay đóng góp ý kiến, bạn hãy bình luận bên dưới nhé.