Vài lưu ý khi Training một Neural Network

  • Chúng ta sử dụng backpropagation để tính đạo hàm của J tại 1 điểm theta nào đó. Vậy thì kiểm tra giá trị này có hiệu quả hay không thì người ta sử dụng một phương pháp gọi là Gradient Checking
  • GRADIENT CHECKING
    • Theo như gradient checking thì giá trị đạo hàm của J tại một điểm theta nào đó sẽ xấp xỉ bằng với giá trị của j tại điểm nhiều hơn nó e đơn vị trừ đi giá trị của j tại điểm ít hơn nó e đơn vị rồi chia cho 2 lần e đơn vị.
    • Cụ thể ta có công thức:
      • Capture.JPG
      • Áp dụng vào bài tập sau.
      • Capture.JPG
      • Đáp án của chúng ta là 3.001. Xấp xỉ bằng với 3. Suy ra đạo hàm của chúng ta là hiệu quả.
  • RANDOM INITIALLIZATION
    • Trước khi chạy gradient descent. Chúng ta cần có bộ giá trị theta đầu vào. Thường thì chúng ta hay lấy tập giá trị theta là các vecto 0 ( hoặc ma trận 0) tuy nhiên trong neural network nếu chúng ta lấy toàn bộ phần tử  của tập theta đều có giá trị không thì sẽ gây ra hiện tượng cân bằng. Giá trị output cũng bị cân bằng, giá trị activation từng unit cũng bị cân bằng, giá trị lỗi hay đạo hàm tại 1 điểm cũng bằng nhau hết.
    • Để giải quyết vấn đề này người ta sử dụng random cho tập theta theo công thức:
      • Capture.JPG
      • Sử dụng hàm rand(x,y) sẽ cho ta ma trận với x hàng và y cột. Các giá trị sẽ nằm trong khoảng từ 0-1.
      • Epsilon là số bất kỳ để theta năm trong khoảng của nó.
  • COST FUNCTION J IS NON-CONVEX.
    • Trong neural network. Cost function J không phải là một hàm lồi. Vì thế có thể nó sẽ xuất hiện những vùng tối ưu cục bộ.
    • Capture.JPG
    • Vì vậy việc random tập theta sẽ giúp ích cho việc chạy gradient nhiều lần. Và có thể mỗi một lần chúng ta lại tìm được các vùng cực tiểu khác nhau nhờ những giá trị theta khác nhau. Từ đó có thể tìm ra được vùng cực tiểu tối ưu nhất.
  • TỔNG HỢP – TRANING MỘT NEURAL NETWORK
    • 1. Chọn một kiến trúc mạng neural, gồm bao nhiêu layer, mỗi layer bao nhiêu unit dựa vào những điều kiện sau:
      • Số unit của input layer thường bằng với số feature mà ta có trong tập dữ liệu
      • Số unit của ouput layer thường bằng với số class cần phân loại
      • Số unit trên hidden layer thì càng nhiều càng tốt, tuy nhiên cần tính toán chi phí tài nguyên. Càng nhiều unit thì càng tốn tài nguyên.
      • Mặc định có 1 hidden layer. Nếu có nhiều hơn thì nên để số unit các hidden layer bằng nhau
    • 2.  Bắt đầu training
      • Xây dựng hàm giả thuyết, công thức tính toán cho các unit.
      • Random tập theta ( theo phương pháp random phía trên)
      • Chạy Backpropagation tìm đạo hàm của theta
      • Chạy Gradient checking kiểm tra sự hiệu quả của Backpropagation.
      • Chạy Gradient Descent để tìm tập theta sao cho J đạt min.
      • Có thể chạy lạy vài lần từ bước random theta để tìm vùng cục tiểu tối ưu nhất.

Bình luận về bài viết này