Chuyển đến nội dung chính

Suy luận số lượng tầng và nơ-ron cho ANN

Có một số lượng tối ưu các tầng ẩn và nơ-ron cho mạng nơ-ron nhân tạo (ANN). Hướng dẫn này trình bày một cách tiếp cận đơn giản để xác định số lượng tối ưu cho các tầng và nơ-ron của ANN.
· 9 phút đọc

Khám phá cùng AI

banner suy luận số lượng tầng và nơ-ron cho ann

Người mới bắt đầu với mạng nơ-ron nhân tạo (ANN) thường đặt ra một số câu hỏi. Chẳng hạn: nên dùng bao nhiêu tầng ẩn? Mỗi tầng ẩn có bao nhiêu nơ-ron? Mục đích của việc dùng tầng/nơ-ron ẩn là gì? Tăng số tầng/nơ-ron ẩn có luôn cho kết quả tốt hơn không? Tôi rất vui được nói rằng chúng ta có thể trả lời những câu hỏi đó. Cần làm rõ rằng việc trả lời có thể rất phức tạp nếu bài toán cần giải quyết cũng phức tạp. Đến cuối bài viết này, bạn sẽ nắm được cách tiếp cận để trả lời những câu hỏi đó và có thể tự thử nghiệm dựa trên các ví dụ đơn giản.

sơ đồ

Giới thiệu

ANN được lấy cảm hứng từ mạng nơ-ron sinh học. Để đơn giản, trong khoa học máy tính, nó được biểu diễn như một tập các tầng. Các tầng này được phân loại thành ba nhóm: đầu vào, ẩn và đầu ra.

Biết số tầng đầu vào và đầu ra cùng số nơ-ron của chúng là phần dễ nhất. Mỗi mạng có một tầng đầu vào và một tầng đầu ra. Số nơ-ron ở tầng đầu vào bằng với số biến đầu vào của dữ liệu đang xử lý. Số nơ-ron ở tầng đầu ra bằng với số đầu ra gắn với mỗi đầu vào. Thách thức nằm ở việc xác định số tầng ẩn và số nơ-ron của chúng.

Dưới đây là một số hướng dẫn để xác định số tầng ẩn và số nơ-ron trong mỗi tầng ẩn đối với bài toán phân loại:

  • Dựa trên dữ liệu, phác thảo biên quyết định kỳ vọng để tách các lớp.
  • Biểu diễn biên quyết định dưới dạng một tập các đường thẳng. Lưu ý rằng sự kết hợp của các đường này phải tạo ra được biên quyết định.
  • Số đường được chọn tương ứng với số nơ-ron ẩn ở tầng ẩn thứ nhất.
  • Để nối các đường được tạo bởi tầng trước đó, thêm một tầng ẩn mới. Lưu ý mỗi khi cần tạo kết nối giữa các đường ở tầng ẩn trước, ta sẽ thêm một tầng ẩn mới.
  • Số nơ-ron ẩn ở mỗi tầng ẩn mới bằng với số kết nối cần tạo.

Để rõ ràng hơn, hãy áp dụng các hướng dẫn trên cho một số ví dụ.

Ví dụ một

Hãy bắt đầu với một ví dụ đơn giản về bài toán phân loại có hai lớp như trong hình sau. Mỗi mẫu có hai đầu vào và một đầu ra biểu diễn nhãn lớp. Ví dụ này khá giống với bài toán XOR.

sơ đồ bài toán phân loại với hai lớp

Câu hỏi đầu tiên cần trả lời là có cần các tầng ẩn hay không. Một quy tắc để xác định điều đó như sau:

Trong mạng nơ-ron nhân tạo, chỉ khi dữ liệu cần được tách một cách phi tuyến thì mới cần các tầng ẩn.

Nhìn vào hình tiếp theo, có vẻ các lớp cần được tách phi tuyến. Một đường thẳng duy nhất sẽ không hiệu quả. Do đó, chúng ta phải dùng các tầng ẩn để có biên quyết định tốt nhất. Trong trường hợp này, vẫn có thể không dùng tầng ẩn, nhưng độ chính xác phân loại sẽ bị ảnh hưởng. Vì vậy, tốt hơn là nên dùng tầng ẩn.

Biết rằng cần các tầng ẩn khiến chúng ta phải trả lời hai câu hỏi quan trọng:

  1. Cần bao nhiêu tầng ẩn?

  2. Số nơ-ron ẩn ở mỗi tầng ẩn là bao nhiêu?

Theo quy trình trước đó, bước đầu tiên là vẽ biên quyết định tách hai lớp. Có nhiều hơn một biên quyết định có thể tách dữ liệu đúng như trong hình dưới. Biên mà chúng ta sẽ dùng để thảo luận nằm ở phần bên phải của hình (b).

sơ đồ biên quyết định tách hai lớp

Theo hướng dẫn, bước tiếp theo là biểu diễn biên quyết định bằng một tập các đường thẳng.

Ý tưởng biểu diễn biên quyết định bằng một tập đường thẳng xuất phát từ việc bất kỳ ANN nào cũng được xây dựng từ perceptron tầng đơn như một khối cơ sở. Perceptron tầng đơn là một bộ phân loại tuyến tính, tách các lớp bằng một đường thẳng được tạo theo phương trình sau:

y=w1x1+w2x2+ ⋯ +wixi+b

Trong đó xi là đầu vào thứ i, wi là trọng số tương ứng, b là độ lệch (bias), và y là đầu ra. Vì mỗi nơ-ron ẩn được thêm vào sẽ làm tăng số lượng trọng số, nên khuyến nghị dùng số nơ-ron ẩn ít nhất có thể để hoàn thành nhiệm vụ. Dùng nhiều nơ-ron ẩn hơn mức cần thiết sẽ làm mô hình phức tạp hơn.

Quay lại ví dụ của chúng ta, nói rằng ANN được xây dựng từ nhiều mạng perceptron tương đương với việc mạng được xây bởi nhiều đường thẳng.

Trong ví dụ này, biên quyết định được thay bằng một tập các đường thẳng. Các đường bắt đầu từ những điểm mà tại đó đường biên đổi hướng. Tại mỗi điểm như vậy, đặt hai đường, mỗi đường theo một hướng khác nhau.

Vì chỉ có một điểm mà tại đó đường biên đổi hướng như thể hiện bằng vòng tròn xám ở hình sau, nên chỉ cần hai đường. Nói cách khác, có hai mạng perceptron tầng đơn. Mỗi perceptron tạo ra một đường thẳng.

sơ đồ hai mạng perceptron tầng đơn

Biết rằng chỉ cần hai đường để biểu diễn biên quyết định cho chúng ta biết tầng ẩn thứ nhất sẽ có hai nơ-ron ẩn.

Đến đây, chúng ta có một tầng ẩn với hai nơ-ron ẩn. Mỗi nơ-ron ẩn có thể xem như một bộ phân loại tuyến tính được biểu diễn bằng một đường thẳng như ở hình trước. Sẽ có hai đầu ra, mỗi đầu ra từ một bộ phân loại (tức một nơ-ron ẩn). Nhưng mục tiêu là xây một bộ phân loại duy nhất với một đầu ra biểu diễn nhãn lớp, không phải hai bộ phân loại. Do đó, đầu ra của hai nơ-ron ẩn phải được gộp thành một đầu ra. Nói cách khác, hai đường cần được nối với nhau bởi một nơ-ron khác. Kết quả được minh họa ở hình tiếp theo.

May mắn thay, chúng ta không cần thêm một tầng ẩn khác với một nơ-ron để làm việc đó. Nơ-ron ở tầng đầu ra sẽ đảm nhiệm. Nơ-ron này sẽ gộp hai đường được tạo trước đó để mạng chỉ có một đầu ra.

sơ đồ gộp các mạng perceptron tầng

Sau khi xác định số tầng ẩn và số nơ-ron của chúng, kiến trúc mạng đã hoàn chỉnh như trong hình sau.

sơ đồ kiến trúc mạng hoàn chỉnh

Ví dụ hai

Một ví dụ phân loại khác được minh họa trong hình tiếp theo. Nó tương tự ví dụ trước với hai lớp, mỗi mẫu có hai đầu vào và một đầu ra. Khác biệt nằm ở biên quyết định. Biên trong ví dụ này phức tạp hơn ví dụ trước.

hình phân loại hai đầu vào một đầu ra

Theo hướng dẫn, bước đầu tiên là vẽ biên quyết định. Biên quyết định được dùng trong thảo luận của chúng ta nằm ở phần ngoài cùng bên trái của hình tiếp theo (a).

Bước tiếp theo là chia biên quyết định thành một tập các đường thẳng, mỗi đường sẽ được mô hình hóa như một perceptron trong ANN. Trước khi vẽ các đường, cần đánh dấu các điểm mà tại đó biên đổi hướng như trong phần ngoài cùng bên phải của hình tiếp theo (b).

hình biên quyết định

Câu hỏi là cần bao nhiêu đường? Mỗi điểm trên cùng và dưới cùng sẽ có hai đường gắn với nó, tổng cộng 4 đường. Điểm ở giữa sẽ dùng chung hai đường từ các điểm kia. Các đường cần tạo được thể hiện trong hình dưới.

Vì tầng ẩn thứ nhất sẽ có số nơ-ron ẩn bằng với số đường, nên tầng ẩn thứ nhất sẽ có 4 nơ-ron. Nói cách khác, có 4 bộ phân loại, mỗi bộ được tạo bởi một perceptron tầng đơn. Ở thời điểm hiện tại, mạng sẽ sinh ra 4 đầu ra, mỗi đầu ra từ một bộ phân loại. Bước tiếp theo là nối các bộ phân loại này lại với nhau để mạng chỉ tạo ra một đầu ra. Nói cách khác, các đường sẽ được kết nối lại bằng các tầng ẩn khác để tạo ra chỉ một đường cong duy nhất.

hình bốn bộ phân loại được nối

Việc chọn bố cục mạng là tùy nhà thiết kế mô hình. Một kiến trúc khả thi là xây dựng tầng ẩn thứ hai với hai nơ-ron ẩn. Nơ-ron ẩn thứ nhất sẽ nối hai đường đầu, và nơ-ron ẩn cuối sẽ nối hai đường cuối. Kết quả của tầng ẩn thứ hai. Kết quả của tầng thứ hai được minh họa trong hình dưới.

sơ đồ tầng thứ hai với hai nơ-ron ẩn

Đến đây, có hai đường cong tách rời. Do đó, mạng có hai đầu ra. Bước tiếp theo là nối các đường cong đó để chỉ còn một đầu ra từ toàn bộ mạng. Trong trường hợp này, nơ-ron ở tầng đầu ra có thể được dùng để thực hiện kết nối cuối cùng thay vì thêm một tầng ẩn mới. Kết quả cuối cùng được thể hiện trong hình sau.

hình các đường cong đã được nối

Sau khi thiết kế mạng hoàn tất, kiến trúc mạng hoàn chỉnh được thể hiện trong hình sau.

hình kiến trúc mạng hoàn chỉnh

Tìm hiểu thêm

SlideShare

YouTube

Chủ đề

Liên quan