Tiểu luận môn Máy học và ứng dụng TÌM HIỂU VÀ CÀI ĐẶT THỰC NGHIỆM MẠNG NEURAL VỚI THUẬT GIẢI LAN TRUYỀN NGƯỢC

23 552 0
Tiểu luận môn Máy học và ứng dụng TÌM HIỂU VÀ CÀI ĐẶT THỰC NGHIỆM MẠNG NEURAL VỚI THUẬT GIẢI LAN TRUYỀN NGƯỢC

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đại Học Quốc Gia TP.HCM Trường Đại Học Công Nghệ Thơng Tin TIỂU LUẬN MƠN HỌC MÁY HỌC TÌM HIỂU VÀ CÀI ĐẶT THỰC NGHIỆM MẠNG NEURAL VỚI THUẬT GIẢI LAN TRUYỀN NGƯỢC GVHD: PGS.TS VŨ THANH NGUYÊN HVTH: NGUYỄN MINH PHÁT MSHV: CH1301047 TP HỒ CHÍ MINH Tháng 3/2014 Tiểu luận: Máy học MỤC LỤC Lời mở đầu Từ đời, máy tính nhanh chóng phát triển đóng vai trị quan trọng nghiên cứu khoa học kỹ thuật đời sống Nhưng máy tính dù có mạnh đến đâu nữa, làm việc theo chương trình hoạch định sẵn lập trình viên Nó khơng có khả liên tưởng, kết nối việc với việc khác, quan trọng hết khả sáng tạo người Vì lý đó, mạng noron (Artificial neural networks ) đời từ mục đích cố gắng mơ hoạt động trí tuệ người.Từ đời, mạng neuron nhanh chóng phát triển lĩnh vực nhận dạng ,phân loại , giảm nhiễu, dự đoán… Trong thu hoạch em tìm hiểu chủ đề nghiên cứu cho máy tính thay người để qiải toán cách thơng minh, mạng neural, cách tiếp cận máy học Phần đầu khóa luận tóm tắt sơ lược máy học số cách tiếp cận Trên sở lý thuyết mạng neural thuật giải lan truyền ngược trình bày chi tiết phần hai Phần cuối khóa luận chương trình minh họa cho phương pháp lan truyền ngược mạng neural Em xin cám ơn sâu sắc đến Thầy Vũ Thanh Nguyên Thầy tận tình giảng dạy chuyển tải thông tin đến cho lớp chúng em suốt thời gian học tập nghiên cứu môn Máy học Tiểu luận: Máy học Bằng lượng kiến thức học tập nghiên cứu em cố gắng hoàn thành thu hoạch phạm vi cho phép, thời gian kiến thức hạn chế nên thu hoạch cịn nhiều thiếu sót Kính mong thầy quan tâm giúp đỡ bảo để em hoàn thiện thu hoạch tốt Một lần em xin tỏ lòng biết ơn Thầy giảng dạy bảo tận tình, cám ơn thầy cô khoa sau đại học nhà trường tạo điều kiện để chúng em hồn thành mơn học Tổng Quan Về Mạng Neural I.Giới Thiệu Mạng neural nhân tạo (Artificial Neural Networks : ANN) đời xuất phát từ ý tưởng mô hoạt động não người Mạng noron nhân tạo tái tạo kỹ thuật chức hệ thần kinh người với vô số neural liên kết truyền thông với qua mạng.Giống người , ANN học kinh nghiệm, lưu kinh nghiệm sử dụng tình phù hợp Mạng neural vài năm trở lại nhiều người quan tâm áp dụng thành công nhiều lĩnh vực khác nhau, tài chính, y tế, địa chất vật lý Thật vậy, đâu có vấn đề dự báo, phân loại điều khiển, mạng neural ứng dụng Ví dụ khả nhận dạng mặt người hệ thống quản lý thông tin liên quan đến người (quản lý nhân công sở, doanh nghiệp; quản lý học sinh, sinh viên trường trung học, đại học cao đẳng;… ); ngành khoa học hình sự, tội phạm; khoa học tướng số, tử vi,… Kết hợp chặt chẽ với logic mờ, mạng neural nhân tạo tạo nên cách mạng thực việc thơng minh hóa vạn hóa điều khiển kỹ thuật cao cho tương lai Ví dụ ứng dụng tự động điều khiển hệ thống lái tàu, hệ thống dự báo cố,… Tiểu luận: Máy học Mạng neural dựa việc mô cấp thấp hệ thống neural sinh học Trong tương lai với phát triển mơ neural sinh học, có loại máy tính thơng minh thật Trong phạm vi đề cập liên quan đến kiến thức sở để làm đồ án, em xin trình bày vấn đề có liên quan, kiến thức sử dụng phục vụ cho việc hoàn thành đồ án II.Khái Niệm Mạng Neural 1.Sơ lược neural sinh học Sau thành phần cấu trúc nơron não người Hình 1.1 : Mơ hình neuron sinh học Trong :  Các Soma thân noron  Các dendrites dây mảnh, dài, gắn liền với soma, chúng truyền liệu (dưới dạng xung điện thế) đến cho soma xử lý Bên soma liệu tổng hợp lại Có thể xem gần tổng hợp phép lấy tổng tất liệu mà nơron nhận  Một loại dây dẫn tín hiệu khác gắn với soma axon Khác với dendrites, axons có khả phát xung điện thế, chúng dây dẫn tín hiệu từ nơron nơi khác Chỉ điện soma vượt giá trị ngưỡng (threshold) axon phát xung điện thế, cịn khơng trạng thái nghỉ Tiểu luận: Máy học  Axon nối với dendrites nơron khác thông qua mối nối đặc biệt gọi synapse Khi điện synapse tăng lên xung phát từ axon synapse nhả số chất hố học (neurotransmitters); chất mở "cửa" dendrites ions truyền qua Chính dịng ions làm thay đổi điện dendrites, tạo xung liệu lan truyền tới nơron khác  Có thể tóm tắt hoạt động nơron sau: nơron lấy tổng tất điện vào mà nhận được, phát xung điện tổng lớn ngưỡng Các nơron nối với synapses Synapse gọi mạnh cho phép truyền dẫn dễ dàng tín hiệu qua nơron khác Ngược lại, synapse yếu truyền dẫn tín hiệu khó khăn Các synapses đóng vai trị quan trọng học tập Khi học tập hoạt động synapses tăng cường, tạo nên nhiều liên kết mạnh nơron Có thể nói người học giỏi có nhiều synapses synapses mạnh mẽ, hay nói cách khác, liên kết nơron nhiều, nhạy bén 2.Mạng Neural Nhân Tạo -Noron nhân tạo đơn vị tính tốn có nhiều đầu vào đầu Hình 1.2 : Mơ hình neuron nhân tạo mức đơn giản Nơron hoạt động sau: giả sử có N inputs, nơron có N weights (trọng số) tương ứng với N đường truyền inputs Nơron lấy tổng cótrọng số tất inputs Nói có nghĩa nơron lấy input thứ nhất, nhân với weight đường input thứ nhất, lấy input thứ hai nhân với weight đường input thứ hai v.v , lấy tổng tất kết thu Đường truyền có weight lớn tín hiệu truyền qua lớn, xem weight đại lượng tương đương với synapse nơron sinh học Có thể viết kết lấy tổng nơron sau: Tiểu luận: Máy học Kết so sánh với threshold t nơron, lớn t nơron cho output 1, cịn nhỏ output Ngồi ta trừ tổng nói cho t, so sánh kết thu với 0, kết dương nơron cho ouput 1, kết âm output Dưới dạng tốn học ta viết output nơron sau: Trong f hàm Heaviside: f gọi threshold function hay transfer function nơron, giá trị (-t) gọi bias hay offset nơron Nếu đưa thêm input vào, input thứ 0, có giá trị luôn weight luôn bias (-t) output nơron cịn viết dạng: Lưu ý số tổng trước 3.Kiến Trúc Mạng Là hệ thống bao gồm nhiều phần tử xử lý đơn giản (hay gọi neural) tựa neural thần kinh não người, hoạt động song song nối với liên kết neural Mỗi liên kết kèm theo trọng số đó, đặc trưng cho tính kích hoạt ức chế neural Tiểu luận: Máy học Có thể xem trọng số phương tiện để lưu trữ thông tin dài hạn mạng neural nhiệm vụ trình huấn luyện mạng cập nhật trọng số có thêm thơng tin mẫu học Hay nói cách khác, trọng số điều chỉnh cho dáng điệu vào mạng mô hồn tồn phù hợp với mơi trường xem xét 3.1 Mạng Một Tầng Mạng tầng với S nơ-ron minh họa hình 3.1 Chú ý với đầu vào số R đầu vào nối với nơ-ron ma trận trọng số có S hàng Một tầng bao gồm ma trận trọng số, cộng, vector ngưỡng b, hàm chuyển vector đầu a bi Mỗi phần tử vector đầu vào p nối với nơ-ron thông qua ma trận trọng số W Mỗi nơ-ron có ngưỡng , cộng, hàm chuyển f đầu Cùng với nhau, đầu tạo thành vector đầu a Thơng thường số lượng đầu vào tầng khác với số lượng nơ-ron.(R#S) Có phải tất nơ-ron tầng phải có hàm chuyển giống ? Câu trả lời khơng; bạn định nghĩa nơ-ron tầng có hàm chuyển khác cách kết hợp song song hai mạng nơ-ron giống Cả hai có đầu vào giống nhau, mạng sản xuất vài đầu Ma trận trọng số cho phần tử vector đầu vào W: W=  w1,1 w1, w1, R     w2,1 w2,2 w2, R       wS ,1 wS ,2 wS , R    Tiểu luận: Máy học     pS a = f(Wp+b) Tiểu luận: Máy học Hình 3.1 : Mơ hình mạng lớp Các số hàng phần tử ma trận W nơ-ron đích kết hợp với trọng số đó, số cột cho biết đầu vào cho trọng số Vì vậy, số w3, nói trọng số đầu vào thứ nối với nơ-ron thứ 3.2 Mạng Đa Tầng Hình 3.2 :Ví dụ mơ hình mạng đa tầng Mơ hình mạng neural gồm lớp: lớp nhập (input), lớp ẩn(hidden) lớp xuất (output) Mỗi nút lớp nhập nhận giá trị biến độc lập chuyển vào mạng Tiểu luận: Máy học Dữ liệu từ tất nút lớp nhập tích hợp – ta gọi tổng trọng số – chuyển kết cho nút lớp ẩn Gọi “ẩn” nút lớp liên lạc với nút lớp nhập lớp xuất, có người thiết kế mạng biết lớp (người sử dụng lớp này) Các nút lớp xuất nhận tín hiệu tổng trọng hóa từ nút lớp ẩn Mỗi nút lớp xuất tương ứng với biến phụ thuộc III.Huấn luyện mạng neural 1.Phương Pháp Học Mạng neural nhân tạo theo việc xử lý thông tin não người, đặc trưng mạng có khả học, khả tái tạo hình ảnh liệu học Trong trạng thái học thông tin lan truyền theo hai chiều nhiều lần để học trọng số Có kiểu học chính, kiểu học tương ứng với nhiệm vụ học trừu tượng Đó học có giám sát (có mẫu), học khơng giám sát học tăng cường Thơng thường loại kiến trúc mạng dùng cho nhiệm vụ 1.1.Học có giám sát Một thành phần thiếu phương pháp có mặt người thầy (ở bên ngồi hệ thống) Người thầy có kiến thức môi trường thể qua tập hợp cặp đầu vào - đầu biết trước Hệ thống học (ở mạng neural) phải tìm cách thay đổi tham số bên (các trọng số ngưỡng) để tạo nên ánh xạ có khả ánh xạ đầu vào thành đầu mong muốn Sự thay đổi tiến hành nhờ việc so sánh đầu thực đầu mong muốn 1.2.Học không giám sát Trong học khơng có giám sát, ta cho trước số liệu x hàm chi phí cần cực tiểu hóa hàm liệu x đầu mạng, f – hàm chi phí định phát biểu toán Phần lớn ứng dụng nằm vùng toán ước lượng mơ hình hóa thống kê, nén, lọc, phân cụm 1.3.Học tăng cường Dữ liệu x thường không tạo trước mà tạo trình agent tương tác với môi trường Tại thời điểm t, agent thực hành động yt môi trường tạo quan sát xt với chi phí tức thời Ct, theo quy trình động (thường không biết) Mục tiêu sách lược lựa chọn hành động để cực tiểu hóa chi phí dài hạn đó, nghĩa chi phí tích lũy mong đợi Quy trình hoạt động mơi trường chi phí dài hạn cho sách lược thường khơng biết, ước lượng Mạng neural nhân tạo thường dùng học tăng cường phần thuật tốn tồn cục Các tốn thường giải học tăng cường tốn điều khiển, trị chơi nhiệm vụ định (sequential decision making) khác 10 Tiểu luận: Máy học 1.4.Ví dụ Giả sử muốn dạy nơron phân biệt chữ A B Khi đưa input A muốn nơron cho output 1, cịn input B nơron phải cho output Hãy bắt đầu cách cho weights giá trị ngẫu nhiên, lúc nơron chưa biết hết Bây input chữ A Nơron lấy tổng có trọng số inputs so sánh kết với Nếu kết dương output 1, âm output Khả nơron đốn 50%, weights có giá trị hồn tồn ngẫu nhiên Nếu nơron đốn khơng cần làm cả, nơron đốn sai (output 0), phải tăng weights inputs hoạt động (các inputs khác không) lên, cho lần tới tổng có trọng số vượt threshold tạo nên output Ngược lại, đưa chữ B vào nơron đốn sai (output 1), ta phải giảm weights inputs hoạt động xuống, cho lần tới tổng có trọng số nhỏ threshold buộc nơron phải cho output Như vậy, dạy chữ B thành cơng nơron có quên chữ học trước A khơng ? Khơng, input chữ khác nhóm đường inputs hoạt động khác khơng hồn tồn trùng Nhớ biến đổi weights inputs hoạt động Chúng ta việc lập lập lại trình dạy nơron học thuộc thơi 2.Thuật Tốn Huấn Luyện Mạng Trong phạm vi đề cập liên quan đến kiến thức sở để làm đồ án, chúng em xin trình bày vấn đề có liên quan, kiến thức sử dụng phục vụ cho việc hoàn thành đồ án Trong đồ án , chúng em sử dụng mạng feed-forward thuật toán lan truyền ngược sai số Back Propagation để xử lý toán 11 Tiểu luận: Máy học 2.1.Thuật Toán Lan Truyền Ngược Back Propagation Đây phương pháp thông dụng để huấn luyện cho mạng nơron truyền thẳng nhiều lớp Có thể áp dụng cho mạng truyền thẳng với hàm chuyển hàm lỗi khả vi Tiêu chuẩn huấn luyện: Làm cho sai số đầu nhỏ tốt Triết lý phương pháp: dựa đầu để điều chỉnh trọng số lớp ra, sau dựa tính tốn lớp để điều chỉnh trọng số lớp ẩn Huấn luyện mạng neural nhiều lớp sử dụng thuật toán Lan truyền ngược gồm hai trình: Quá trình truyền tuyến tính q trình truyền ngược: Q trình truyền tuyến tính: Dữ liệu từ lớp nhập qua lớp ẩn đến lớp xuất để:  Thay đổi giá trị trọng số liên kết W neural mạng biểu diễn liệu học  Tìm khác giá trị thật hàm mẫu mà mạng tính kết dự đốn mạng gọi lỗi (học có giám sát) Q trình truyền ngược: Giá trị lỗi truyền ngược lại cho trình huyến luyện(học) tìm trọng số Wi để lỗi nhỏ Cơng thức tính áp dụng cụ thể cho toán đề cập phần I.2 Chương  Những hạn chế phương pháp lan truyền ngược: Ngồi thành cơng giải thuật học lan truyền ngược, cịn có số khía cạnh làm cho giải thuật trở nên chưa bảo đảm lúc tốt Khó khăn chủ yếu q trình huấn luyện lâu Có thể nhịp độ học động lực không tối ưu Sự sai sót việc huấn luyện nói chung xuất từ hai nguồn: mạng liệt cực tiểu địa phương Mạng liệt: xảy trọng số điều chỉnh tới giá trị lớn Tổng đầu vào đơn vị ẩn đơn vị đầu mà đạt giá trị cao (hoặc dương âm), qua hàm kích hoạt sigmoid, đơn vị có giá trị kích hoạt gần gần Giá trị hiệu chỉnh trọng số gần 0, trình huấn luyện đến trạng thái dừng ảo Cực tiểu địa phương: bề mặt sai số mạng phức tạp đầy đồi thung lũng Bởi hạ độ dốc, mạng bị mắc bẫy cực tiểu địa phương 12 Tiểu luận: Máy học có nhiều cực tiểu thấp gần bên cạnh Những phương pháp thống kê giúp để tránh bẫy này, chúng làm chậm Một phương án khác tăng thêm số lượng đơn vị ẩn Như làm việc không gian sai số nhiều chiều, nên hội gặp bẫy nhỏ Tuy nhiên việc tăng có giới hạn trên, vượt qua giới hạn này, hội mắc bẫy lại tăng lên Giải thuật lan truyền ngược - Single Neuron Một tế bào neuron với trọng số đầu vào Và giây lát, loại bỏ chức kích hoạt từ hình ảnh (để nhãn tính phần tổng kết) Ta đưa vào tập huấn luyện đơn giản tính tốn sai số của neuron với tồn tập huấn luyện Ta tính tốn sai số cách tính tổng bình phương độ lệch neuron đầu từ nhãn thực tế Phần quan trọng là hàm trọng số Nói cách khác, tập trọng số hoàn toàn xác định hành vi tế bào neuron Phần tính tốn Bất lúc có hàm đa biến (ở đây, trọng số biến), nói cực tiểu cực đại Trong trường hợp này, để tìm tối thiểu tồn cuc hàm lỗi , chúng học hàm phân lớp mục tiêu Thật vậy, để cải thiện tập trọng số tại, sử dụng thuật toán giảm gradient chuẩn Khi cho số thực cho neuron (chọn trọng số), lấy neuron làm cho tốt cách thay đổi trọng số nhẹ, đảm bảo thay đổi giúp đạt giá trị nhỏ Nếu đảm bảo điều này, nghĩa đạt đến mức nhỏ 13 Tiểu luận: Máy học Để thuận tiện ta bổ sung thiểu vào bỏsubscript từ Khi giảm thiểu giảm , điều khơng có nghĩa thay đổi hàm cực tiểu Có nghĩa là, từ sau ta dùng cơng thức Sau ta tính tốn gradient tại) vector Các giá trị thích hợp cho biến (tập trọng số , biết tính tốn điểm có hướng tăng lên mạnh hàm Có nghĩa là, trừ số lương đủ nhỏ vector từ vector trọng số tại, tiến gần để cực tiểu hóa hàm lỗi Lưu ý có giá trị tối thiểu toàn cục tiến gần (nếu có thể, neuron biểu diễn cho ham mục tiêu hồn thiện, khơng) Có nghĩa là, nguyên tắc cập nhật thực sau: Trong số tham số thích hợp có giá trị biểu diễn cho "tỷ lệ học." Với quy tắc cập nhật ta tính tốn Trong quy tắc : cách rõ ràng: , xem biến khác bên cạnh khơng đổi, kết hợp với Vì cơng thức tính tổng cho biến xuất tích điều kiện thứ vector ), phần cuối thay vào ta có (trong 14 Tiểu luận: Máy học Khi quy tắc cập nhật là: Có nguyên tắc cập nhật khác cho phép cập nhật trọng số sau đầu vào riêng biệt kiểm tra (ngược với trình kiểm tra kết đầu toàn tập huấn luyện) Đây quy tắc cập nhật ngẫu nhiên , đưa hệt trên, không tính tổng tất : Thêm vào hàm kích hoạt khơng khó khăn, lựa chọn để có tính chất đặc biệt thuận lợi cho việc tính tốn Cụ thể, ta chọn hàm sigmoid , thỏa mãn: Vì vậy, thay công thức trên, cần quy tắc dây chuyền lần nữa: Và cách sử dụng đồng , điều địi hỏi phải có cho Và sử dụng nguyên tắc cập nhật tương tự Ta kí hiệu giá trị đầu cơng thức dựa ngẫu nhiên theo nguyên tắc cập nhật , Bây có nguyên tắc cập nhật neuron nhất, tìm hiểu xem làm để áp dụng điều cho toàn mạng neuron Giải thuật lan truyền ngược - Toàn mạng Có vấn đề việc huấn luyện mạng neuron cách sử dụng nguyên tắc cập nhật Chúng ta đầu "mong đợi" cung bên đồ thị Để tính tốn lỗi cần phải biết đầu xác gì, khơng có thơng tin 15 Tiểu luận: Máy học Chúng ta giá trị lỗi cho nút khơng có đầu mạng Trong hình trên, biết giá trị kỳ vọng cung từ nút , Để tính tốn lỗi cho , cần phải lấy số loại giá trị lỗi cho nút mạng Nó hợp lý lỗi cho phụ thuộc vào lỗi nút mà đầu vào Trong hình sau lỗi đến từ tất neuron cung cấp Đặc biệt, giá trị lỗi cho đầu vào cụ thể cho toàn mạng tổng trọng số qua lỗi , với trọng số cung nối từ đến Nói cách khác, có tác dụng đầu đặc biệt , khơng chịu q nhiều lỗi Ở hình ảnh trên, lỗi cho (với trọng số đầu vào ) 16 Tiểu luận: Máy học Với lỗi tính tốn cho nút Nó việc chứng minh lý thuyết đẹp cho việc sử dụng số lượng tốt Đặc biệt, nghĩ toàn mạng hàm nhất, tưởng tượng lỗi hàm phức tạp tất trọng số mạng Nhưng khơng có vấn đề khó khăn viết hàm, biết liên quan đến phép cộng, nhân, kết hợp hàm phân biệt Vì vậy, muốn biết làm để cập nhật lỗi liên quan đến trọng số với lớp ẩn mạng, mặt lý thuyết địi hỏi đủ ứng dụng quy tắc dây chuyền để tìm thấy Để thấy điều này, nói có nút kết nối chuyển tiếp đến nút kết nối chuyển tiếp đến nút , trọng số đại diện cho trọng số từ , trọng số cho cung từ Nếu muốn biết đạo hàm riêng ta tính tốn nó: tương ứng với trọng số lồng với , Với đại diện cho giá trị hàm xung neuron đầu ra, điều kiện loạt tính tổng qt khơng bình thường Nhưng sau áp dụng quy tắc dây chuyền, phần tổng bên phụ thuộc vào thông qua hệ số Tức là, trọng số ảnh hưởng đến nút đầu qua cung dán nhãn Vì vậy, nhận tổng: Nghĩa là, đơn giản tổng trọng số lỗi cuối với trọng số Những thứ bên đơn giản đầu nút đó, mà lại tổng số đầu vào Trong dạng ngẫu nhiên, nguyên tắc cập nhật (với trọng số ) là: Với ký hiệu véc tơ đầu vào cho neuron dạng câu hỏi (có thể đầu vào ban đầu neuron xuất mạng tất yếu tố đầu vào kết nối với nó, kết đầu neuron khác ăn vào nó) 17 Tiểu luận: Máy học Và thiết lập nguyên tắc cập nhật, thuật toán lan truyền ngược để huấn luyện mạng neuron trở nên tương đối đơn giản Bắt đầu cách khởi tạo trọng số mạng cách ngẫu nhiên Đánh giá đầu vào cách cho chuyển tiếp thơng qua mạng ghi lại nút cục giá trị đầu , gọi đầu cuối Sau tính toán lỗi cho giá trị đầu ra, lan truyền lỗi trở lại để nút hồi đáp nút đầu ra, cập nhật trọng số cho nút đầu cách sử dụng nguyên tắc cập nhật Lặp lại lan truyền lỗi theo sau cập nhật trọng số cho nút hồi đáp vào nút đầu cách, tính toán cập nhật cho nút hồi đáp vào nút này, trọng số tồn mạng cập nhật Sau lặp lại với đầu vào Một vấn đề nhỏ dừng lại Cụ thể, trường hợp mà cần đánh giá đầu vào lần Tùy thuộc vào cách tham số học thiết lập, cần phải đánh giá tồn tập huấn luyện nhiều lần! Thật vậy, nên dừng lại gradient cho tất mẫu cho nhỏ, chạy đủ lâu đến ta khơng cịn đủ kiên nhẫn Để đơn giản, bỏ qua việc kiểm tra gradient nhỏ, sửa số lần lặp lại Kết thu mạng huấn luyện sử dụng để đánh giá nhãn cho đầu vào không rõ CÀI ĐẶT THUẬT GIẢI VỚI PYTHON cần phải cài cấu trúc liệu cho mạng Có nghĩa là, cần phải biểu diễn nút cung kết nối nút Hơn nữa, cung cần phải có giá trị kết hợp, nút cần phải lưu trữ nhiều giá trị (các lỗi truyền ngược lại, đầu nút đó) Vì vậy, ta cần xây dựng hai lớp: classNode: def init (self): self.lastOutput =None self.lastInput =None self.error =None self.outgoingEdges =[] self.incomingEdges =[] classEdge: def init (self, source, target): self.weight =random.uniform(0,1) self.source =source self.target =target # noi cac cung den cac nut source.outgoingEdges.append(self) target.incomingEdges.append(self) 18 Tiểu luận: Máy học Sau đó, mạng nơ-ronđược biểu diễnbằng cách thiết lập đầu vào đầu nút classNetwork: def init (self): self.inputNodes =[] self.outputNode =None Đặc biệt, Node cần biết lượng đầu vào đầu gần nó, lỗi cập nhật trọng số Vì vậy, lúc đánh giá số đầu vào, cần phải lưu trữ giá trị Node Ta đưa vào lớp với phương thức cần thiết để đánh giá huấn luyện mạng dựa tập liệu Chúng ta cần phân biệt nút đầu vào nút nội vào mạng nên ta tạo lớp Node gọi InputNode: classInputNode(Node): def init (self, index): Node. init (self) self.index =index; # số vector đầu vào tương ứng với nút Và hàm đánh giá đầu vào cho trước cung cấp mạng nơ-ron: classNetwork: defevaluate(self, inputVector): returnself.outputNode.evaluate(inputVector) classNode: defevaluate(self, inputVector): self.lastInput =[] weightedSum =0 fore inself.incomingEdges: theInput =e.source.evaluate(inputVector) self.lastInput.append(theInput) weightedSum +=e.weight *theInput self.lastOutput =activationFunction(weightedSum) returnself.lastOutput 19 Tiểu luận: Máy học classInputNode(Node): defevaluate(self, inputVector): self.lastOutput =inputVector[self.index] returnself.lastOutput Một mạng nơ-ron gọi hàm đánh giá nút đầu nó, nút đệ quy gọi đánh giá nguồn cung mà đến InputNode đơn giản trả mục tương ứng inputVector (mà địi hỏi phải vượt qua vector đầu vào thơng qua lời gọi đệ quy) Cấu trúc đồ thị tùy ý, lưu ý số nút "đánh giá" nhiều lần Như vậy, cần phải lưu trữ đầu nút suốt thời gian đánh giá Chúng ta cần phải lưu giá trị để sử dụng huấn luyện, trước gọi hàm để đánh giá phải làm rõ giá trị Chúng ta sử dụng hàm evaluate() để huấn luyện để đánh giá yếu tố đầu vào không rõ Các mẫu ví dụ cho việc sử dụng lớp (và kiểm tra) đưa sẵn vào mã nguồn Ngoài ra, cần phải tự động thêm nút thiên vị cung tương ứng nối nút khơng có đầu vào.Điều dẫn đến phân lớp Node có hàm evaluate() có giá trịmặc định Sự tồn lớp không thay đổi thuật tốn huấn luyện classBiasNode(InputNode): def init (self): Node. init (self) defevaluate(self, inputVector): return1.0 Thêm hàm lớp Node (hàm ghi đè lớp InputNode) có thêm nút thiên vị cung để nối tất nút không đầu vào Các thuật tốn huấn luyện có vịng lặp bao gồm ba bước: + Đầu tiên, đánh giá mẫu đầu vào + Thứ hai, qua mạng nơ-ron cập nhật giá trị lỗi nút sử dụng phương pháp lan truyền ngược + Thứ ba, qua mạng nơ-ron lần để cập nhật trọng số cung phù hợp classNetwork: defpropagateError(self, label): 20 Tiểu luận: Máy học fornode inself.inputNodes: node.getError(label) defupdateWeights(self, learningRate): fornode inself.inputNodes: node.updateWeights(learningRate) deftrain(self, labeledExamples, learningRate=0.9, maxIterations=10000): whilemaxIterations > 0: forexample, label inlabeledExamples: output =self.evaluate(example) self.propagateError(label) self.updateWeights(learningRate) maxIterations -=1 Lớp network thực lời gọi cho q trình đệ quy Sau Node có hàm sau để thực getError updateWeights: classInputNode(Node): defupdateWeights(self, learningRate): foredge inself.outgoingEdges: edge.target.updateWeights(learningRate) defgetError(self, label): foredge inself.outgoingEdges: edge.target.getError(label) classNode: defgetError(self, label): ifself.error isnotNone: returnself.error ifself.outgoingEdges ==[]: # this is an output node self.error =label -self.lastOutput else: self.error =sum([edge.weight *edge.target.getError(label) foredge inself.outgoingEdges]) returnself.error defupdateWeights(self, learningRate): 21 Tiểu luận: Máy học if(self.error isnotNoneandself.lastOutput isnotNone andself.lastInput isnotNone): fori, edge inenumerate(self.incomingEdges): edge.weight +=(learningRate *self.lastOutput *(1self.lastOutput) * self.error *self.lastInput[i]) foredge inself.outgoingEdges: edge.target.updateWeights(learningRate) self.error =None self.lastInput =None self.lastOutput =None Trên đơn giản cài đặt cơng thức tính tốn sang mã chương trình Lỗi lan truyền tính tổng trọng số getError(), giá trị đầu vào đầu trước lưu gọi hàm evaluate() Minh họa giải thuật trên: hàm Sine Một ví dụ đơn giản sử dụng để minh họa cho cài đặt Trong q trình tính tốn này, cho phép mạng neuroncó đầu với giá trị (hàm kích hoạt thực điều này) Và sử dụng mạng neuron để xấp xỉ gần hàm có giá trị Đặc biệt, thử trên miền Mạng neuron xây dựng đơn giản: có lớp hai mươi tế bào neuron, neuron số kết nối với neuron đầu vào neuron đầu Tỷ lệ học thiết lập 0,25, số lần lặp lại thiết lập 100000, tập huấn luyện lấy mẫu ngẫu nhiên từ miền Sau đào tạo (mất khoảng mười lăm giây), lỗi trung bình (khi thử nghiệm với mẫu ngẫu nhiên mới) nằm 0.03 0.06 Dưới ví dụ đầu như: 22 Tiểu luận: Máy học Một ví dụ mạng neuron 20-nút xấp xỉ hai giai đoạn hàm sin Ngồi ra, cịn có tập hợp liệu số nhị phân có nhãn số chẵn có nhãn số lẻ Một cách bố trí tương tự ví dụ sin với ba nút bên lần cho kết tốt Kết thu hoạch: Trong chương trình mơ phỏng, cài đặt mạng neural theo giải thuật lan truyền ngược Mặc dù chưa phải ứng dụng mang tính thực tế mạng neural chương trình minh họa chi tiết phương pháp lan truyền ngược Đồng thời tính đắn mặt tốn học trình bày cách tương đối phần lý thuyết Từ phát triển ứng dụng mạng neural vào toán thực tế sau dễ dàng Hạn chế thu hoạch: chưa đưa ứng dụng mang tính thực tế mạng neural chưa trình bày cải tiến đưa vào nhiều ứng dụng cơng trình khoa học phương pháp lan truyền ngược 23 Tiểu luận: Máy học Tài liệu tham khảo Bài giảng Thầy PGS.TS Vũ Thanh Nguyên Simon Haykin-Neural Networks a Comprehensive Foundation Yoshua Bengio, Aaron Courville, and Pascal Vincent Representation Learning: A Review and New Perspectives Tạp chí khoa học công nghệ,Đại học Đà Nẵng – Số 4(27).2008 An Introduction to Neural Networks.pdf http:/ /codeproject.com Và số nguồn http://google.com 24 ... em sử dụng mạng feed-forward thuật toán lan truyền ngược sai số Back Propagation để xử lý toán 11 Tiểu luận: Máy học 2.1 .Thuật Toán Lan Truyền Ngược Back Propagation Đây phương pháp thông dụng. .. dụ sin với ba nút bên lần cho kết tốt Kết thu hoạch: Trong chương trình mơ phỏng, cài đặt mạng neural theo giải thuật lan truyền ngược Mặc dù chưa phải ứng dụng mang tính thực tế mạng neural. .. (có thể đầu vào ban đầu neuron xuất mạng tất yếu tố đầu vào kết nối với nó, kết đầu neuron khác ăn vào nó) 17 Tiểu luận: Máy học Và thiết lập nguyên tắc cập nhật, thuật toán lan truyền ngược để

Ngày đăng: 21/05/2015, 12:49

Từ khóa liên quan

Mục lục

  • Những hạn chế của phương pháp lan truyền ngược:

Tài liệu cùng người dùng

Tài liệu liên quan