Neural Network With Matlab #3.5: Cấu trúc dữ liệu của mạng nơ-ron (mạng động)

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

Chia sẻ trang này

Lượt xem: 1,168

  1. Cu Bo

    By:Cu Boin: 17 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 #3.5:
    Cấu trúc dữ liệu của mạng nơ-ron
    (Mạng động)

    [​IMG]

    Ở bài trước, ta đã biết sơ bộ về vector đầu vào song song (đồng thời), vector đầu vào nối tiếp (liên tiếp) và mạng tĩnh có vector đầu vào song song. Bài này sẽ nói về mạng động có vector đầu vào song song và nối tiếp.

    Mô phỏng với vector đầu vào nối tiếp trong mạng động

    Khi mạng có trễ (delay), đầu vào của mạng thường sẽ là một chuỗi các vector đầu vào theo thứ tự thời gian nào đó. Để rõ hơn, ta xét mạng đơn giản chứa một delay.

    [​IMG]
    Ta sẽ thiết lập mạng này với thông số: W = [1 2]; p1 = [1], p2 = [2], p3 = [3], p4 = [4], bằng những lệnh sau:
    Mã:
    net = newlin([-1 1],...
    
    1,...
    [0 1]... %đầu vào vector delay.
    );
    net.biasConnect = 0; %xóa bias
    net.IW{1,1} = [1 2];
    P = {1 2 3 4}; %vector đầu vào nối tiếp.
    A = sim(net,P) %mô phỏng mạng với đầu vào P
    A =
    [1] [4] [7] [10]
    [​IMG]

    Đầu vào của ta là một mảng (cell array) chứa các đầu vào nối tiếp, và kết quả của mạng cũng sẽ là một mạng chứa các đầu ra nối tiếp.
    Chú ý: Thứ tự các đầu vào rất quan trọng khi hoạt động một cách nối tiếp. Trong trường hợp này, các giá trị đầu ra thu được phụ thuộc vào giá trị đầu vào trước đó. Nếu ta thay đổi thứ tự đầu vào thì kết quả của đầu ra sẽ thay đổi theo.


    Với trường hợp trên, quá trình khi tính toán trong mạng như sau:
    Mã:
    (a = W{1,1}*p1 + W{1,2}*p2 +b
    a1 = 1*1+2*0+0 = 1  (giá trị đầu vào 2 là 0)
    a2 = 1*2+2*1+0 = 4  (giá trị đầu vào 2 là 1)
    a3 = 1*3+2*2+0 = 7  (giá trị đầu vào 2 là 2)
    a4 = 1*4+2*3+0 = 10 (giá trị đầu vào 2 là 3)
    Mô phỏng với vector đầu vào song song trong mạng động

    Nếu ta thay đổi đầu vào của bài ví dụ phần trước bằng cách thay vector đầu vào nối tiếp thành vector đầu vào song song thì ta thu được kết quả khác nhau hoàn toàn. Cùng với ví dụ của phần trước, nếu ta sử dụng đầu vào song song ta sẽ có:
    Mã:
    net = newlin([-1 1],...
    1,...
    [0 1]... %đầu vào vector delay.
    );
    net.biasConnect = 0; %xóa bias
    net.IW{1,1} = [1 2];
    P = [1 2 3 4]; %vector đầu vào song song.
    A = sim(net,P) %mô phỏng mạng với đầu vào P
    A =
    1 2 3 4
    Kếu quả sẽ riêng rẻ nếu ta áp dụng song song mỗi đầu vào tới một mạng riêng biệt và tính toán một đầu ra.
    Chú ý: Khi ta không set giá trị ban đầu cho mạng có trễ thì chúng được coi là bằng 0. Đối với trường hợp trên thì đầu ra chỉ bằng 1 nhân với đầu vào, vì weight w nhân với đầu vào là 1.

    Trong trường hợp đặc biệt, ta cần phải mô phỏng đáp ứng của mạng với một vài chuỗi số khác nhau trong cùng một thời gian. Ta cần phải tạo ra mạng có đầu vào vừa là song song vừa là nối tiếp. Ví dụ, ta có 2 vector đầu vào nối tiếp như sau:

    p1(1) = [1], p1(2) = [2], p1(3) = [3], p1(4) = [4].
    p2(1) = [4], p2(2) = [3], p2(3) = [2], p2(4) = [1].​

    Để có thể mô phỏng mạng với 2 vector trên thì chỉ cần nhập các lệnh:
    Mã:
    P = {[1 4] [2 3] [3 2] [4 1]};
    A = sim(net,P)
    A = 
    {[1 4] [4 11] [7 8] [10 5]}
    Quá trình tính toán​
    Mã:
    A = {[a11 a21] [a12 a22] [a13 a23] [a14 a24]}
    
    a11 = 1*1+2*0 = 1
    a21 = 1*4+2*0 = 4
    
    a12 = 1*2+2*1 = 4
    a22 = 1*3+2*4 = 11
    
    a13 = 1*3+2*2 = 7
    a23 = 1*2+2*3 = 8
    
    a14 = 1*4+2*3 = 10
    a24 = 1*1+2*2 = 5
    Ta có thể thấy, cột đầu tiên của mỗi ma trận chính là kết quả đầu ra của bài ví dụ đầu tiên (mạng động với vector đầu vào nối tiếp). Cột thứ hai của mỗi ma trận là kết quả đầu ra nối tiếp của mạng với vector đầu vào nối tiếp thứ 2. Không có sự tương tác giữa 2 chuỗi nối tiếp (concurrent sequence). Nó giống như các mạng được chạy song song với từng chuỗi đầu vào nối tiếp khác nhau.

    Sơ đồ sau chỉ ra khuôn dạng chung của đầu vào P đến hàm sim khi ta có chuỗi Q vào song song qua những bước thời gian Ts. Nó đúng với trường hợp chỉ có 1 vector vào. Mỗi phần tử của mảng là một ma trận của các vector song song tương ứng với một thời điểm trên mỗi chuỗi. Nếu có nhiều vector vào sẽ có nhiều hàng của ma trận trong mảng.

    [​IMG]
    Trong phần này, ta đã áp dụng đầu vào song song và nối tiếp vào mạng động. Trong phần trước, ta đã áp dụng đầu vào song song vào mạng tĩnh. Nó cũng có thể được áp dụng đầu vào nối tiếp vào mạng tĩnh. Nó sẽ không làm thay đổi kết quả mô phỏng, nhưng nó có thể ảnh hưởng đến cách thức huấn luyện mạng. Điều này sẽ được giải quyết ở phần tiếp theo.
     
    Lu ROm thích bài này.