Neural Network With Matlab #6.5: Luật học nơ-ron Perceptron

Thảo luận trong 'TRÍ TUỆ NHÂN TẠO' bắt đầu bởi Cu Bo, 25 Tháng bảy 2016.

Chia sẻ trang này

Lượt xem: 1,587

  1. Cu Bo

    By:Cu Boin: 25 Tháng bảy 2016
    Cu Bo

    Tham gia ngày:
    25 Tháng bảy 2014
    Bài viết:
    13
    Đã được thích:
    8
    Neural Network With Matlab #6.5:
    Luật học nơ-ron Perceptron



    [​IMG]
    Luật học
    Luật học là thủ tục làm thay đổi trọng số w và bias b của mạng (thủ tục này có thể xem như là một thuật toán huấn luyện). Luật học được áp dụng cho việc huấn luyện mạng thực hiện một số công việc cụ thể nào đó. Các luật học được phân làm 2 loại: học có giám sáthọc không giám sát.

    • Với học có giám sát, luật học được cung cấp cùng với tập các ví dụ (tập huấn luyện) đặc trưng của mạng
    [​IMG]
    Trong đó P{q} là một đầu vào của mạng, và t{q} là đầu ra (mục tiêu) chính xác tương ứng. Giống như đầu vào đến mạng, đầu ra của mạng được so sánh với mục tiêu. Luật học được sử dụng để điều chỉnh trọng số W và bias b của mạng nhằm làm cho kết quả đầu ra gần giống với mục tiêu mong đợi.
    • Với học không giám sát, trọng số và bias được thay đổi tương ứng chỉ với đầu vào mà không có sẵn đầu ra mong muốn (mục tiêu). Phần lớn các thuật toán này biểu diễn thành một tập bó. Người ta chia mẫu vào thành con số cụ thể của hạng (loại). Điều này đặc biệt hữu ích trong các ứng dụng cụ thể như một vector lượng tử hóa.
    Trong bài này ta chỉ tìm hiểu kiểu học có giám giác cho việc huấn luyện mạng Perceptron.
    Luật học Perceptron (learnp)
    Perceptron được huấn luyện theo mẫu mong muốn cho trước. Mẫu mong muốn có thể tập hợp thành một tập các cặp đầu vào, đầu ra:

    [​IMG]
    trong đó p là một đầu vào của mạng và t là kết quả mong muốn (mục tiêu) đạt được ở đầu ra. Với mục đích làm giảm sự sai lệch (error) e, là sự sai lệch của kết quả đầu ra a với kết quả mong muốn t; e = t - a. Luật học Perceptron tính toán thay đổi trọng số và bias với vector đầu vào p và sai lệch e. Vector kết quả mong muốn t chỉ có giá trị 1 hoặc 0, nên Perceptron (sử dụng hàm truyền hardlim), đầu chỉ có thể là 1 trong 2 giá trị.

    Mỗi lần learnp thực hiện, perceptron có đầu ra ít sự sai lệnh hơn so với kết quả mong muốn. Luật học Perceptron sẽ hội tụ đến kết quả cuối cùng sau một số hữu hạn lần lặp nếu như có tồn tại đáp án.

    Nếu không sử dụng bias, learnp làm việc để tìm đáp án bằng việc thay đổi vector trọng số w để chỉ rõ vector thuộc lớp 1 hay lớp 0. Kết quả này dùng để quyết định đường phân chia là đường trực giao với W, quyết định sự phân chia vector đầu vào.

    Có 3 trường hợp có thể xảy ra với một nơ-ron mỗi khi vector đầu vào p đưa vào và đáp ứng mạng a được tính toán:

    • Trường hợp 1: Nếu đầu vào được đưa vào và có đầu ra của nơ-ron đúng với kết quả mong muốn (a=t, và e=t-a=0), thì trọng số sẽ không thay đổi.
    • Trường hợp 2: Nếu đầu ra nơ-ron bằng 0 và kết quả mong muốn là 1 (a=0, và t=1, e=t-a=1), vector đầu vào p làm tăng vector trọng w. Điều này làm cho vector trọng tiến gần với vector vào, dần dần khả năng vector vào sẽ được phân loại a = 1 trong tương lai.
    • Trường hợp 3: Nếu đầu ra nơ-ron bằng 1 và kết quả mong muốn là 0 (a=1, t=0, e=t-a=-1), vector đầu vào p làm giảm vector trọng w. Điều đó làm cho vector trọng càng xa vector vào, dần dần vector vào sẽ phân loại a = 0 trong tương lai.
    Luật học perceptron có thể được viết lại ngắn gọn hơn sự sai lệch e=t-a, và sự thay đổi của vector trọng dw (delta weight):
    • Trường hợp 1: nếu e = 0, thì dw = 0.
    • Trường hợp 2: Nếu e = 1, thì dw = p{T}.
    • Trường hợp 3: Nếu e = -1, thì dw = -p{T}.
    Tất cả 3 trường hợp trên có thể viết lại bằng một biểu thức đơn giản:
    [​IMG]
    Ta có thể nhận được biểu thức để thay đổi bias của nơ-ron, với bias chỉ là trọng số của đầu vào bằng 1:
    [​IMG]
    Đối với trường hợp của một lớp nơ-ron ta có:
    [​IMG]
    Luật học Perceptron có thể tóm tắt như sau:
    [​IMG]
    trong đó e=t-a.
    Bây giờ ta thử một bài ví dụ đơn giản. Bắt đầu với một mạng nơ-ron đơn lớp có vector đầu vào với 2 phần tử.

    Mã:
    net = newp([-2 2;-2 2],1);
    Để đơn giản ta thiết lập bias bằng 0 và trọng số bằng [1 -0.8]
    Mã:
    net.b{1} = 0;
    W = [1 -0.8];
    net.IW{1,1} = W;
    Có đầu vào và kết quả đầu ra mong muốn:
    Mã:
    p = [1;2];
    t = 1;
    Ta có thể tính toán đầu vào và độ sai lệch với
    Mã:
    a = sim(net,p)
    a =
          0
    e = t - a
    e =
          1
    và ta sử dụng hàm learnp để tìm sự thay đổi của trọng số.
    Mã:
    dw = learnp(w,p,[],[],[],[],e,[],[],[])
    dw =
             1     2
    Trọng số mới thu được:
    Mã:
    W = W + dw
    W =
           2    1.2
    Việc tìm kiếm trọng số mới (và bias) được lặp đi nhiều lần đến khi độ sai lệch e triệt tiêu.

    Chú ý: Luật học Perceptron đảm bảo để hội tụ sau một số hữu hạn các bước của tất cả các bài toán có thể giải quyết bằng perceptron. Nó bao hàm tất cả các bài toán phân loại "Tách rời tuyến tính" (Linearly separable). Các đối tượng để phân loại trong mọi trường hợp đều có thể cách ly bằng đường đơn.