thumbnail - Cơ bản về Deep Learning  (II)

Cơ bản về Deep Learning (II)

Như đã nói trong phần giới thiệu, học sâu là một quá trình đào tạo một mạng nơ-ron nhân tạo với một lượng dữ liệu khổng lồ. Sau khi được đào tạo, mạng sẽ có thể cung cấp cho chúng ta các dự đoán về dữ liệu không nhìn thấy. Trước khi tôi đi sâu hơn trong việc giải thích học sâu là gì, chúng ta hãy nhanh chóng đi qua một số thuật ngữ được sử dụng trong đào tạo mạng nơ-ron.

Mạng thần kinh - Neural Networks

Ý tưởng về mạng thần kinh nhân tạo được bắt nguồn từ mạng thần kinh trong não của chúng ta. Một mạng nơ-ron điển hình bao gồm ba lớp - đầu vào, đầu ra và lớp ẩn như trong hình bên dưới.

Cơ bản về Deep Learning  (II) 

Đây còn được gọi là mạng nơ-ron nông (Shallow Neural Networks), vì nó chỉ chứa một lớp ẩn. Bạn thêm nhiều lớp ẩn trong kiến trúc trên để tạo ra một kiến trúc phức tạp hơn.

Mạng sâu – Deep Networks

Sơ đồ sau đây cho thấy một mạng sâu bao gồm bốn lớp ẩn, một lớp đầu vào và một lớp đầu ra.

Cơ bản về Deep Learning  (II) 

Khi số lượng lớp ẩn được thêm vào mạng, quá trình đào tạo của nó trở nên phức tạp hơn về tài nguyên và thời gian cần thiết để đào tạo toàn bộ mạng.

Mạng đào tạo mạng - Network Training

Sau khi xác định kiến trúc mạng, bạn huấn luyện nó để thực hiện một số loại dự đoán nhất định. Huấn luyện một mạng là một quá trình tìm kiếm các trọng số thích hợp cho mỗi liên kết trong mạng. Trong quá trình đào tạo, dữ liệu chuyển từ các lớp Đầu vào đến Đầu ra thông qua các lớp ẩn khác nhau. Vì dữ liệu luôn di chuyển theo một hướng từ đầu vào đến đầu ra, chúng tôi gọi mạng này là Mạng truyền thẳng (Feed-forward Network) và chúng ta gọi quá trình truyền dữ liệu là Truyền xuôi (Forward Propagation).

Chức năng kích hoạt - Activation Function

Tại mỗi lớp, chúng ta tính toán tổng trọng số của các đầu vào và đưa nó vào chức năng Kích hoạt. Chức năng kích hoạt mang lại tính phi tuyến tính cho mạng. Nó chỉ đơn giản là một số chức năng toán học làm gián đoạn kết quả đầu ra. Một số hàm kích hoạt được sử dụng phổ biến nhất là sigmoid, hyperbolic, tangent (tanh), ReLU và Softmax.

Truyền ngược Backpropagation

Backpropagation (Truyền ngược) là một thuật toán để học có giám sát. Trong Backpropagation, các lỗi truyền ngược từ đầu ra đến lớp đầu vào. Với một hàm lỗi, chúng ta tính toán dốc(gradient) của hàm lỗi đối với trọng số được chỉ định tại mỗi kết nối. Việc tính toán độ dốc tiến hành ngược lại thông qua mạng. Gradient của lớp vật nặng cuối cùng được tính trước và gradient của lớp vật nặng đầu tiên được tính sau cùng.

Tại mỗi lớp, các tính toán từng phần của gradient được sử dụng lại trong việc tính toán gradient cho lớp trước đó. Đây được gọi là Gradient Descent (giảm dần độ dốc).

Trong hướng dẫn dựa trên dự án này, bạn sẽ xác định một mạng nơron sâu chuyển tiếp và đào tạo nó bằng các kỹ thuật lan truyền ngược và chuyển đổi độ dốc. May mắn thay, Keras cung cấp cho chúng ta tất cả các API cấp cao để xác định kiến trúc mạng và đào tạo nó bằng cách sử dụng gradient descent. Tiếp theo, bạn sẽ học cách làm điều này trong Keras.

Hệ thống nhận dạng chữ số viết tay

Trong dự án nhỏ này, bạn sẽ áp dụng các kỹ thuật được mô tả trước đó. Bạn sẽ tạo một mạng nơ-ron học sâu sẽ được đào tạo để nhận dạng các chữ số viết tay. Trong bất kỳ dự án học máy nào, thách thức đầu tiên là thu thập dữ liệu. Đặc biệt, đối với mạng học sâu, bạn cần dữ liệu khổng lồ. May mắn thay, đối với vấn đề mà chúng tôi đang cố gắng giải quyết, ai đó đã tạo tập dữ liệu để đào tạo. Đây được gọi là mnist (bộ cơ sở dữ liệu lớn nhất về chữ số viết tay), có sẵn như một phần của các thư viện Keras. Tập dữ liệu bao gồm một số hình ảnh 28x28 pixel của các chữ số viết tay. Bạn sẽ đào tạo model của mình trên phần chính của tập dữ liệu này và phần còn lại của dữ liệu sẽ được sử dụng để xác thực mô hình được đào tạo của bạn.

Mô tả dự án

Bộ dữ liệu mnist bao gồm 70000 hình ảnh của các chữ số viết tay. Một vài hình ảnh mẫu được sao chép lại tại đây để bạn tham khảo.

Cơ bản về Deep Learning  (II) 

Mỗi hình ảnh có kích thước 28 x 28 pixel, làm cho nó có tổng cộng 768 pixel ở nhiều cấp độ xám khác nhau. Hầu hết các điểm ảnh có xu hướng hướng tới bóng đen trong khi chỉ một số ít trong số chúng hướng tới màu trắng. Chúng ta sẽ đặt sự phân bố của các pixel này trong một mảng hoặc một vectơ. Ví dụ: sự phân bố các pixel cho một hình ảnh điển hình của chữ số 4 và 5 được thể hiện trong hình bên dưới.

Mỗi hình ảnh có kích thước 28 x 28 pixel, làm cho nó có tổng cộng 768 pixel ở nhiều cấp độ xám khác nhau. Hầu hết các điểm ảnh có xu hướng hướng tới bóng đen trong khi chỉ một số ít trong số chúng hướng tới màu trắng. Chúng ta sẽ đặt sự phân bố của các pixel này trong một mảng hoặc một vectơ. Ví dụ: sự phân bố các pixel cho một hình ảnh điển hình của chữ số 4 và 5 được thể hiện trong hình bên dưới.

Cơ bản về Deep Learning  (II) 

Rõ ràng, bạn có thể thấy rằng sự phân bố của các pixel (đặc biệt là những pixel có xu hướng thiên về tông màu trắng) khác nhau, điều này phân biệt các chữ số mà chúng đại diện. Chúng ta sẽ cung cấp phân phối 784 pixel này cho mạng của chúng ta làm đầu vào. Đầu ra của mạng sẽ bao gồm 10 loại đại diện cho một chữ số từ 0 đến 9.

Mạng của chúng ta sẽ bao gồm 4 lớp - một lớp đầu vào, một lớp đầu ra và hai lớp ẩn. Mỗi lớp ẩn sẽ chứa 512 nút. Mỗi lớp được kết nối đầy đủ với lớp tiếp theo. Khi chúng tôi đào tạo mạng, chúng tôi sẽ tính toán trọng số cho mỗi kết nối. Chúng ta đào tạo mạng bằng cách áp dụng lan truyền ngược và giảm độ dốc mà chúng ta đã thảo luận trước đó.

Mời bạn đón đọc phần tiếp theo.

Chủ đề liên quan

Chủ đề khác