20
Dữ liệu phù hợp với một mạng Neural Mạng lưới thần kinh là tốt ở chức năng phù hợp. Trong thực tế, có bằng chứng cho thấy một mạng lưới thần kinh khá đơn giản có thể phù hợp với bất kỳ chức năng thực tế. Giả sử, ví dụ, rằng bạn có dữ liệu từ một ứng dụng nhà ở. Bạn muốn thiết kế một mạng lưới có thể dự đoán giá trị của một ngôi nhà (trong $ 1000), với 13 mẩu thông tin địa lý và bất động sản. Bạn có tổng cộng 506 nhà ví dụ mà bạn có những 13 hạng mục dữ liệu và giá trị thị trường liên quan của họ. Bạn có thể giải quyết vấn đề này theo hai cách: Sử dụng một giao diện người dùng đồ họa, nftool , như mô tả trong Sử dụng công cụ Lắp Neural Network . Sử dụng chức năng dòng lệnh, như mô tả trong sử dụng dòng lệnh chức năng . Nó thường là tốt nhất để bắt đầu với giao diện đồ họa, và sau đó sử dụng giao diện để tự động tạo ra các kịch bản dòng lệnh. Trước khi sử dụng một trong hai phương pháp, đầu tiên xác định được vấn đề bằng cách chọn một tập dữ liệu. Mỗi giao diện có quyền truy cập vào nhiều bộ dữ liệu mẫu mà bạn có thể sử dụng để thử nghiệm với các hộp công cụ (xem Neural Network Toolbox Bộ dữ liệu mẫu ). Nếu bạn có một vấn đề cụ thể mà bạn muốn giải quyết, bạn có thể tải dữ liệu của bạn vào không gian làm việc. Phần tiếp theo mô tả các định dạng dữ liệu. Xác định một vấn đề Để xác định một vấn đề phù hợp cho các hộp công cụ, sắp xếp một tập hợp các Q vector đầu vào như là các cột trong một ma trận. Sau đó, sắp xếp một tập hợp các vector mục tiêu Q (các vectơ đầu ra chính xác cho mỗi vector đầu vào) vào một ma trận thứ hai (xem "Cấu trúc dữ liệu" cho một mô tả chi tiết về dữ liệu định dạng cho dữ liệu chuỗi tĩnh và thời gian). Ví dụ, bạn có thể xác định các vấn đề phù hợp cho một Boolean cổng AND với bốn bộ vector đầu vào hai yếu tố và mục tiêu một phần tử như sau: đầu vào = [0 1 0 1; 0 0 1 1]; mục tiêu = [0 0 0 1]; Phần tiếp theo cho thấy làm thế nào để đào tạo một mạng lưới để phù hợp với một tập dữ liệu, bằng cách sử dụng mạng lưới thần kinh giao diện công cụ phù hợp, nftool . Ví dụ này sử dụng bộ dữ liệu nhà cung cấp với hộp công cụ. Sử dụng công cụ Lắp Neural Network 1. Mở Neural Network Bắt đầu giao diện với lệnh này: 2. nnstart

Dữ liệu phu hợp với một mạng Neural

Embed Size (px)

Citation preview

Dữ liệu phù hợp với một mạng NeuralMạng lưới thần kinh là tốt ở chức năng phù hợp. Trong thực tế, có bằng chứng cho thấy một mạng lưới thần kinh khá đơn giản có thể phù hợp với bất kỳ chức năng thực tế.Giả sử, ví dụ, rằng bạn có dữ liệu từ một ứng dụng nhà ở. Bạn muốn thiết kế một mạng lưới có thể dự đoán giá trị của một ngôi nhà (trong $ 1000), với 13 mẩu thông tin địa lý và bất động sản. Bạn có tổng cộng 506 nhà ví dụ mà bạn có những 13 hạng mục dữ liệuvà giá trị thị trường liên quan của họ.Bạn có thể giải quyết vấn đề này theo hai cách:

Sử dụng một giao diện người dùng đồ họa, nftool , như mô tả trong Sử dụng công cụ Lắp Neural Network .

Sử dụng chức năng dòng lệnh, như mô tả trong sử dụng dòng lệnh chức năng .Nó thường là tốt nhất để bắt đầu với giao diện đồ họa, và sau đó sử dụng giao diện để tự động tạo ra các kịch bản dòng lệnh. Trước khi sử dụng một trong hai phương pháp, đầu tiên xác định được vấn đề bằng cách chọn một tập dữ liệu. Mỗi giao diện có quyền truy cập vào nhiều bộ dữ liệu mẫu mà bạn có thể sử dụng để thử nghiệm với các hộp côngcụ (xem Neural Network Toolbox Bộ dữ liệu mẫu ). Nếu bạn có một vấn đề cụ thể mà bạn muốn giải quyết, bạn có thể tải dữ liệu của bạn vào không gian làm việc. Phần tiếp theo mô tả các định dạng dữ liệu.Xác định một vấn đềĐể xác định một vấn đề phù hợp cho các hộp công cụ, sắp xếp một tập hợp các Q vector đầu vào như là các cột trong một ma trận. Sau đó, sắp xếp một tập hợp các vector mục tiêu Q (các vectơ đầu ra chính xác cho mỗi vector đầu vào) vào một ma trận thứ hai (xem "Cấu trúc dữ liệu" cho một mô tả chi tiết về dữ liệu định dạng cho dữ liệu chuỗi tĩnh và thời gian). Ví dụ, bạn có thể xác định các vấn đề phù hợp cho một Boolean cổngAND với bốn bộ vector đầu vào hai yếu tố và mục tiêu một phần tử như sau:

đầu vào = [0 1 0 1; 0 0 1 1];mục tiêu = [0 0 0 1];

Phần tiếp theo cho thấy làm thế nào để đào tạo một mạng lưới để phù hợp với một tập dữliệu, bằng cách sử dụng mạng lưới thần kinh giao diện công cụ phù hợp, nftool . Ví dụ này sử dụng bộ dữ liệu nhà cung cấp với hộp công cụ.Sử dụng công cụ Lắp Neural Network1. Mở Neural Network Bắt đầu giao diện với lệnh này:

2. nnstart

3. Nhấn vào Công cụ Lắp để mởNeural Network Công cụ Lắp. (Bạn cũng có thể sử dụng lệnh nftool .)

4. Nhấn vào Tiếp theo để tiến hành.

5. Nhấn vào tải Ví dụ Data Set trong cửa sổ Select Data. Cửa sổ Data Set Chooser Lắp sẽ mở ra.Lưu ý    sử dụng các đầu vào và tiêu tùy chọn trong cửa sổ Select Data khi bạn cầnphải tải dữ liệu từ MATLAB ® không gian làm việc.

6.

7. Chọn nhà giá , và nhấn Import . Điều này đưa bạn trở về cửa sổ Select Data.8. Nhấn vào Tiếp theo để hiển thị cửa sổ Xác nhận và kiểm tra dữ liệu, thể hiện trong

hình dưới đây.Xác nhận và kiểm tra bộ dữ liệu được thiết lập để mỗi 15% dữ liệu gốc.

Với thiết lập này, các vector đầu vào và vector mục tiêu sẽ được chia ngẫu nhiên thành ba nhóm như sau:

70% sẽ được sử dụng cho việc đào tạo. 15% sẽ được sử dụng để xác nhận rằng mạng đã được khái quát hóa và chấm dứt đào tạo

trước khi overfitting. Cuối cùng 15% sẽ được sử dụng như là một thử nghiệm hoàn toàn độc lập mạng tổng

quát.(Xem "Chia dữ liệu" để thảo luận chi tiết của quá trình phân chia dữ liệu.)

9. Nhấn vào Tiếp theo .

Mạng lưới tiêu chuẩn được sử dụng cho các chức năng phù hợp là hai lớp feedforward mạng, với một chức năng chuyển sigmoid trong lớp ẩn và một chức năng chuyển tuyến tính trong lớp đầu ra. Số mặc định của tế bào thần kinh ẩn được thiết lập để 10 . Bạn có thể muốn tăng con số này sau đó, nếu việc thực hiện đào tạo mạng là người nghèo.

10. Nhấn vào Tiếp theo .

11. Chọn một thuật toán huấn luyện, sau đó nhấp vào tàu. . Levenberg-Marquardt ( trainlm ) được khuyến khích cho hầu hết các vấn đề, nhưng đối với một số vấn đề ồn ào và nhỏ quy tắc Bayes ( trainbr ) có thể mất nhiều thời gian nhưng có được mộtgiải pháp tốt hơn. Đối với các vấn đề lớn, tuy nhiên, Scaled liên hợp Gradient (trainscg ) được khuyến khích vì nó sử dụng các tính toán độ dốc mà có nhiều bộ nhớhiệu quả hơn so với tính toán Jacobian hai thuật toán khác sử dụng. Ví dụ này sử dụng mặc định Levenberg-Marquardt.Việc đào tạo tiếp tục cho đến khi lỗi xác nhận thất bại trong việc giảm trong sáu lặp đi lặp lại (xác nhận ngừng).

12. Theo Lô , nhấp vào hồi quy . Này được sử dụng để xác nhận hiệu suất mạng.Các lô hồi quy sau đâyhiển thị các kết quả đầu ra mạng đối với các mục tiêu cho bộ đào tạo, xác nhận, và thử nghiệm với. Cho hoàn toàn phù hợp, dữ liệu nên rơi dọc theo một đường 45 độ, nơi mà các kết quả đầu ra mạng bằng với mục tiêu. Đối với vấnđề này, phù hợp là hợp lý tốt cho tất cả các tập hợp dữ liệu, với các giá trị R trong từng trường hợp 0.93 hoặc cao hơn. Nếu ngay cả kết quả chính xác hơn được yêucầu, bạn có thể đào tạo lại mạng bằng cách nhấn vào đào tạo lại trong nftool . Điềunày sẽ thay đổi trọng lượng ban đầu và những thành kiến của mạng, và có thể tạo ra một mạng lưới được cải thiện sau đào tạo lại. Các tùy chọn khác được cung cấp trên cửa sổ sau.

11. Xem biểu đồ lỗi để có được xác minh thêm hiệu suất mạng. Theo Lô cửa sổ, bấm LỗiHistogram.

Các thanh màu xanh đại diện cho dữ liệu huấn luyện, các thanh màu xanh đại diện chodữ liệu xác nhận, và các thanh màu đỏ đại diện cho dữ liệu thử nghiệm. Các biểu đồ có thể cung cấp cho bạn một dấu hiệu của sự chênh lệch, đó là những điểm dữ liệu màphù hợp là tồi tệ hơn so với phần lớn các dữ liệu đáng kể. Trong trường hợp này, bạn có thể thấy rằng trong khi hầu hết các lỗi rơi giữa -5 và 5, có một điểm đào tạo với sai số 17 và xác nhận điểm với sai sót của 12 và 13 Những giá trị ngoại laicũng có thể nhìn thấy trên cốt truyện hồi quy thử nghiệm. Là người đầu tiên tương ứng với điểm với mục tiêu 50 và sản lượng gần 33 Đó là một ý tưởng tốt để kiểm tra các giá trị ngoại lai để xác định xem các dữ liệu là xấu, hoặc nếu những điểm dữ liệu là khác nhau hơn so với phần còn lại của tập dữ liệu. Nếu Bên ngoài là những điểm dữ liệu hợp lệ, nhưng không giống như phần còn lại của dữ liệu, sau đó các mạng được ngoại suy cho những điểm này. Bạn nên thu thập thêm dữ liệu giống như cácđiểm outlier và đào tạo lại mạng.12. Nhấn Tiếp trong Công cụ Lắp Neural Network để đánh giá mạng.

Tại thời điểm này, bạn có thể kiểm tra các mạng đối với dữ liệu mới.Nếu bạn không hài lòng với hiệu suất của mạng lưới trên các dữ liệu gốc hoặc mới, bạn có thể làm một trong những điều sau đây:

Đào tạo lại nó. Tăng số lượng các tế bào thần kinh. Nhận được một tập dữ liệu huấn luyện lớn hơn.

Nếu hiệu suất trên tập huấn luyện là tốt, nhưng việc thực hiện tập kiểm tra là tồi tệ hơn đáng kể, có thể chỉ ra overfitting, sau đó giảm số lượng các tế bào thần

kinh có thể cải thiện kết quả của bạn. Nếu hiệu suất đào tạo là người nghèo, sau đóbạn có thể muốn tăng số lượng các tế bào thần kinh.13. Nếu bạn hài lòng với hiệu suất mạng, nhấp vào Tiếp theo .14. Sử dụng bảng điều khiển này để tạo ra một chức năng MATLAB hoặc Simulink ® sơ đồ

để mô phỏng hệ thống thần kinh của bạn. Bạn có thể sử dụng các mã được tạo ra hoặc sơ đồ để hiểu rõ hơn về mạng lưới thần kinh của bạn tính toán kết quả đầu ra từ đầu vào, hoặc triển khai mạng với MATLAB Compiler ™ công cụ và các công cụsinh mã khác MATLAB.

15. Sử dụng các nút trên màn hình này để tạo ra các kịch bản hay để lưu giữ kết quả của bạn.

Bạn có thể bấm Script đơn giản hay nâng cao Script để tạo ra mã MATLAB có thể được sử dụng để tái tạo tất cả các bước trước đó từ dòng lệnh. Tạo mã MATLAB có thể hữu ích nếu bạn muốn tìm hiểu làm thế nào để sử dụng chức năng dòng lệnh của hộp công cụ tùy biến quá trình đào tạo. Trong Sử dụng dòng lệnh chức năng , bạn sẽ điều tra các kịch bản được tạo ra một cách chi tiết hơn.

Bạn cũng có thể lưu lại dưới dạng các mạng lưới trong vùng làm việc. Bạn có thể thực hiện các xét nghiệm bổ sung vào nó hoặc đặt nó để làm việc trên đầu vào mới.

16. Khi bạn đã tạo ra mã MATLAB và lưu kết quả của bạn, nhấp vào Kết thúc .Sử dụng dòng lệnh chức năngCách dễ nhất để học cách sử dụng các chức năng dòng lệnh của hộp công cụ là để tạo ra các kịch bản từ ảnh minh hoạ, và sau đó thay đổi chúng để tùy chỉnh đào tạo mạng. Như một ví dụ, hãy nhìn vào kịch bản đơn giản đã được tạo ra ở bước 14 của phần trước.

% Giải quyết một vấn đề khớp nối đầu vào-đầu ra với một Neural Network % Script được tạo ra bởi NFTOOL % % kịch bản này giả định các biến được định nghĩa: % .% houseInputs - dữ liệu đầu vào houseTargets% - dữ liệu mục tiêu. đầu vào = houseInputs;mục tiêu = houseTargets; % Tạo một mạng LắphiddenLayerSize = 10;net = fitnet (hiddenLayerSize);

% Thiết lập bộ phận của dữ liệu cho đào tạo, xác thực, kiểm tranet.divideParam.trainRatio = 70/100;net.divideParam.valRatio = 15/100;net.divideParam.testRatio = 15/100; % Đào tạo Mạng[Net, tr] = xe lửa (ròng, đầu vào, mục tiêu); % Kiểm tra mạngkết quả đầu ra = net (đầu vào);lỗi = gsubtract (kết quả đầu ra, mục tiêu);hiệu suất thực hiện = (net, mục tiêu, kết quả đầu ra) Xem% Mạngview (net) Lô% % Bỏ ghi chú những dòng này để cho phép các lô khác nhau. con số%, plotperform (tr) con số%, plottrainstate (tr) con số%, plotfit (mục tiêu, kết quả đầu ra) con số%, plotregression (mục tiêu, kết quả đầu ra) con số%, ploterrhist (lỗi)

Bạn có thể lưu các tập lệnh, và sau đó chạy nó từ dòng lệnh để sao chép các kết quả của phiên giao diện trước đó.Bạn cũng có thể chỉnh sửa kịch bản để tùy chỉnh quá trìnhđào tạo. Trong trường hợp này, hãy làm theo từng bước trong kịch bản.1. Các kịch bản giả định rằng các vector đầu vào và vector mục tiêu đã được nạp vào

không gian làm việc. Nếu dữ liệu không được nạp, bạn có thể tải chúng như sau:

2. tải house_dataset3. đầu vào = houseInputs;4. mục tiêu = houseTargets;

Tập dữ liệu này là một trong những mẫu bộ dữ liệu là một phần của hộp công cụ (xem Neural Network Toolbox Bộ dữ liệu mẫu ). Bạn có thể thấy một danh sách của tấtcả các tập hợp dữ liệu có sẵn bằng cách nhập lệnhnndatasets giúp đỡ . Các tải lệnh cũng cho phép bạn tải các biến từ bất kỳ các tập hợp dữ liệu sử dụng tên biến của riêng bạn. Ví dụ, lệnh

[Đầu vào, mục tiêu] = house_dataset;

sẽ được tải đầu vào nhà ở vào mảng đầu vào và các mục tiêu nhà ở vào mảng mục tiêu .

5. Tạo ra một mạng lưới. Mạng lưới mặc định cho chức năng phù hợp (hoặc hồi quy) các vấn đề, fitnet , là một mạng lưới feedforward với mặc định chức năng chuyển giao tan-sigma trong lớp và tuyến tính chuyển giao chức năng ẩn trong lớp ra. Bạn giao mười tế bào thần kinh (phần nào tùy ý) cho một lớp ẩn trong phần trước.Mạng lưới cómột tế bào thần kinh sản lượng, bởi vì chỉ có một giá trị mục tiêu liên kết với mỗivector đầu vào.

6. hiddenLayerSize = 10;7. net = fitnet (hiddenLayerSize);

Lưu ý    gửi tế bào thần kinh yêu cầu tính toán nhiều hơn, và họ có xu hướng overfit dữ liệu khi số lượng được đặt quá cao, nhưng họ cho phép mạng để giải quyết vấn đề phức tạp hơn. Nhiều lớp đòi hỏi phải tính toán nhiều hơn, nhưng việc sử dụng chúng có thể dẫn đến việc giải quyết các vấn đề phức tạp mạng hiệu quả hơn. Để sử dụng nhiều hơn một lớp ẩn, hãy nhập kích thước lớp ẩn như các yếu tố của một mảng trongfitnet lệnh.

8. Thiết lập các bộ phận của dữ liệu.

9. net.divideParam.trainRatio = 70/100;10. net.divideParam.valRatio = 15/100;11. net.divideParam.testRatio = 15/100;

Với thiết lập này, các vector đầu vào và vector mục tiêu sẽ được chia ngẫu nhiên, với 70% sử dụng cho đào tạo, 15% để xác nhận và 15% để thử nghiệm. (Xem "Chia dữ liệu" để thảo luận chi tiết của quá trình phân chia dữ liệu.)

12. Đào tạo mạng. Các mạng sử dụng các thuật toán Levenberg-Marquardt mặc định ( trainlm ) đào tạo. Đối với các vấn đề trong đó Levenberg-Marquardt không tạo ra kết quả chính xác như mong muốn, hoặc các vấn đề về dữ liệu lớn, hãy xem xét thiết lập các chức năng đào tạo mạng Bayes quy tắc ( trainbr ) hoặc Scaled Conjugate Gradient ( trainscg ), tương ứng, với một trong hai13. net.trainFcn = 'trainbr';

net.trainFcn = 'trainscg';Đào tạo mạng, nhập:

[Net, tr] = xe lửa (ròng, đầu vào, mục tiêu);

Trong quá trình đào tạo, đào tạo sau cửa sổ mở ra. Cửa sổ này hiển thị quá trình đào tạo và cho phép bạn làm gián đoạn đào tạo tại bất kỳ điểm nào bằng cách nhấn Dừng đào tạo .

Đào tạo này dừng lại khi lỗi xác nhận tăng sáu lần lặp lại, mà xảy ra tại lặp đi lặp lại 23 Nếu bạn nhấp vào Hiệu suất trong cửa sổ đào tạo, một âm mưu của các lỗi đào tạo, lỗi xác nhận, và các lỗi kiểm tra xuất hiện, như thể hiện trong hình dưới đây. Trong ví dụ này, kết quả là hợp lý vì những yếu tố sau:

Sai số trung bình vuông cuối cùng là nhỏ. Các lỗi thiết lập thử nghiệm và xác nhận lỗi bộ có những đặc điểm tương tự. Không overfitting đáng kể đã xảy ra bằng cách lặp đi lặp lại 17 (nơi xác nhận việc

thực hiện tốt nhất xảy ra).

14. Kiểm tra mạng. Sau khi mạng đã được đào tạo, bạn có thể sử dụng nó để tính toán đầura mạng. Các mã sau đây tính toán đầu ra mạng, lỗi và hiệu suất tổng thể.

15. kết quả đầu ra = net (đầu vào);16. lỗi = gsubtract (mục tiêu, kết quả đầu ra);17. hiệu suất thực hiện = (net, mục tiêu, kết quả đầu ra)

18. hiệu suất =19.20. 6,002321.Nó cũng có thể để tính toán hiệu suất mạng chỉ trên các thiết lập kiểm tra, bằng cách sử dụng các chỉ số xét nghiệm, nằm trong hồ sơ đào tạo. (Xem Phân tích hiệu suất mạng Neural Sau khi đào tạo cho một mô tả đầy đủ của hồ sơ đào tạo.)

tInd = tr.testInd;tstOutputs = net (đầu vào (tInd));tstPerform = thực hiện (net, mục tiêu (tInd), tstOutputs)

tstPerform =

1.5700e + 03

22. Thực hiện một số phân tích phản ứng của mạng. Nếu bạn nhấp vào hồi quy trong cửa sổđào tạo, bạn có thể thực hiện một hồi quy tuyến tính giữa các đầu ra mạng và mục tiêu tương ứng.Hình dưới đây cho thấy kết quả.

Kết quả theo dõi các mục tiêu rất tốt cho việc đào tạo, kiểm tra và xác nhận, và R có giá trị là hơn 0.95 cho toàn bộ phản ứng. Nếu ngay cả kết quả chính xác hơn đượcyêu cầu, bạn có thể thử bất kỳ của các phương pháp tiếp cận:

Thiết lập lại các trọng số mạng ban đầu và những thành kiến với các giá trị mới với init và đào tạo lại (xem"Khởi tạo trọng số" (init)).

Tăng số lượng các tế bào thần kinh ẩn. Tăng số lượng các vector đào tạo. Tăng số lượng các giá trị đầu vào, nếu thông tin liên quan hơn là có sẵn. Hãy thử một thuật toán huấn luyện khác nhau (xem "Đào tạo thuật toán" ).

Trong trường hợp này, phản ứng của mạng là đạt yêu cầu, và bây giờ bạn có thể đặt mạng để sử dụng trên đầu vào mới.

23. Xem sơ đồ mạng.

24. view (net)

Để có được nhiều kinh nghiệm trong hoạt động dòng lệnh, hãy thử một số trong những nhiệm vụ:

Trong quá trình đào tạo, mở một cửa sổ lô (chẳng hạn như âm mưu hồi quy), và xem nó sinh động.

Lô từ dòng lệnh với các chức năng như plotfit , plotregression , plottrainstate và plotperform . (Để biết thêm thông tinvề cách sử dụng các chức năng này, xem các trang tài liệu tham khảo của họ.)Ngoài ra, xem kịch bản nâng cao cho nhiều lựa chọn hơn, khi đào tạo từ dòng lệnh.Mỗi lần một mạng lưới thần kinh được huấn luyện, có thể dẫn đến một giải pháp khác nhau do giá trị khối lượng và sai lệch ban đầu khác nhau và các bộ phận khác nhau của dữ liệu vào bộ đào tạo, xác nhận, và thử nghiệm. Kết quả là, các mạng thần kinh khác nhau đào tạo về cùng một vấn đề có thể cho kết quả khác nhau cho cùng một đầu vào.Để đảm bảo rằng một mạng lưới thần kinh của độ chính xác cao đã được tìm thấy, đào tạo lại nhiều lần.Có một số kỹ thuật khác để cải thiện khi các giải pháp ban đầu nếu độ chính xác cao hơn là mong muốn. Để biết thêm thông tin, xem Cải thiện Neural Network Khái quát và Tránh Overfitting .