Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
7,24 MB
Nội dung
TRƯỜNG ĐẠI H ỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI KHOA CÔNG NGH Ệ THÔNG TIN NGHIÊN CỨU MẠNG NƠ RON THÍCH HỢP CHO VIỆC NHẬN DẠNG CHỮ VIẾT SỐ TAY Hà Nội – Năm 2021 TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI KHOA CÔNG NGHỆ THƠNG TIN NGHIÊN CỨU MẠNG NƠ RON THÍCH HỢP CHO VIỆC NHẬN DẠNG CHỮ VIẾT SỐ TAY Sinh viên thực hiện: Công nghệ thông tin Mã sinh viên: ĐH7C1 Chuyên ngành: Trần Thu ỷ Mai Lớp: 1711060171 Khoá học: 2017-2021 NGƯỜI HƯỚNG DẪN: Nguyễn Văn Hách Hà Nội – Năm 2021 LỜI N I ĐU Ngày không phủ nhận vai trị quan trọng máy tinh nghiên cứu khoa học kỹ thuật đời sống Máy tính làm điều kỳ điệu giải vấn để tướng chủng nan giải Cảng ngày cảng có nhiều người tự hỏi, liệu máy tính có khả suy nghĩ người hay chưa? Chúng ta không trả lời câu Thay vào đó, nêu khác biệt chủ yếu cách làm việc máy tính óc người Một máy tính, đủ có mạnh đến đâu nữa, phải làm việc theo chương trình xác hoạch định trước chuyên gia Bài tốn phức tạp việc lập trình cơng phu Trong người làm việc cách học tập rèn luyện, làm việc người có khả liên tưởng, kết nối việc với việc khác, quan trọng hết, họ sáng tạo Do có khả liên tưởng, người đễ đàng làm nhiều điều mà việc lập trình cho máy tính địi hỏi nhiều cơng sức Chẳng hạn việc nhận dạng hay trị chơi chữ Một em bé tự học hỏi để nhận đạng phân loại đồ vật chung quanh mình, biết thức ăn, đồ chơi Một người bình thưởng đốn vài chữ chữ Nhưng thật khó mà dạy cho máy tính làm việc Từ lâu nhà khoa học nhận thấy ưu điểm óc người tìm cách bắt chước để thực máy tính, tạo cho có khả học tập, nhận dạng phản loại Các mạng neural nhân tạo đời từ nổ lực Nó thực ý nhanh chóng trở thành hướng nghiên cứu đảy triển vọng mục đích xảy đựng máy thơng minh tiến gần tới trí tuệ người Đặc biệt lĩnh vực nhận dạng Bạn gửi Hơm lúc 03:27 Ngày khơng phủ nhận vai trò quan trọng máy tính nghiên cứu khoa học kỹ thuật đời sống Máy tính làm điều kỳ điệu giải vấn để tưởng chừng nan giải Càng ngày có nhiều người tự hỏi, liệu máy tính có khả suy nghĩ người hay chưa? Chúng ta không trả lời câu hỏi Thay vào đó, nêu khác biệt chủ yếu cách làm việc máy tính óc người Một máy tính, đủ có mạnh đến đâu nữa, phải làm việc theo chương trình xác hoạch định trước chuyên gia Bài toán phức tạp việc lập trình cơng phu Trong người làm việc cách học tập rèn luyện, làm việc người có khả liên tưởng, kết việc với việc khác, quan trọng hết, họ sáng tạo Do có khả liên tưởng, người dễ dàng làm nhiều điều mà việc lập trình cho máy tính địi hỏi nhiều cơng sức Chẳng hạn việc nhận dạng hay trò chơi ô chữ Một em bé tự học hỏi để nhận dạng phân loại đồ vật chung quanh mình, biết thức ăn, đồ chơi Một người bình thưởng đốn vài chữ chữ Nhưng thật khó mà dạy cho máy tính làm việc Từ lâu nhà khoa học nhận thấy ưu điểm óc người tìm cách bắt chước để thực máy tính, tạo cho có khả học tập, nhận dạng phản loại Các mạng neural nhân tạo đời từ nổ lực Nó thực ý nhanh chóng trở thành hướng nghiên cứu đầy triển vọng mục đích xây đựng máy thơng minh tiến gần tới trí tuệ người Đặc biệt lĩnh vực nhận dạng Bạn gửi Hơm lúc 03:29 Ngày khơng phủ nhận vai trò quan trọng máy tính nghiên cứu khoa học kỹ thuật đời sống Máy tính làm điều kỳ điệu giải vấn để tưởng chừng nan giải Càng ngày có nhiều người tự hỏi, liệu máy tính có khả suy nghĩ người hay chưa? Chúng ta không trả lời câu hỏi Thay vào đó, nêu khác biệt chủ yếu cách làm việc máy tính óc người Một máy tính, đủ có mạnh đến đâu nữa, phải làm việc theo chương trình xác hoạch định trước chuyên gia Bài toán phức tạp việc lập trình cơng phu Trong người làm việc cách học tập rèn luyện, làm việc người có khả liên tưởng, kết nối việc với việc khác, quan trọng hết, họ sáng tạo Do có khả liên tưởng, người dễ dàng làm nhiều điều mà việc lập trình cho máy tính địi hỏi nhiều cơng sức Chẳng hạn việc nhận dạng hay trị chơi chữ Một em bé tự học hỏi để nhận dạng phân loại đồ vật chung quanh mình, biết thức ăn, đồ chơi Một người bình thưởng đốn vài chữ chữ Nhưng thật khó mà dạy cho máy tính làm việc Từ lâu nhà khoa học nhận thấy ưu điểm óc người tìm cách bắt chước để thực máy tính, tạo cho có khả học tập, nhận dạng phản loại Các mạng neural nhân tạo đời từ nổ lực Nó thực ý nhanh chóng trở thành hướng nghiên cứu đầy triển vọng mục đích xây đựng máy thơng minh tiến gần tới trí tuệ người Đặc biệt lĩnh vực nhận dạng Trong báo cáo t ập l ớn mơn Tính tốn m ềm em xin trình bày đề tài “Nghiên cứu mạng Nơ ron thích hợp cho việc nhận dạng chữ viết số tay” Sinh viên th ực hi ện Trần Thuỷ Mai TM TT NỘI DUNG Như nói trên, báo cáo em trình bày đề tài “Nghiên cứu m ạng Nơ ron thích hợp cho vi ệc nhận dạng chữ viết số tay” Với c ác l ý thuy ết, ph ân t ích ứng dụng mạng Nơron thích h ợp cho việc nh ận dạng chữ viết số tay” Nội dung ph ần báo cáo g ồm 14 chương : • I Tổng quan mạng nơron • II Cấu trúc nơron • III Học có giám sát học khơng có giám sát • IV Gi ải thuật lan truyền ngược • V Learning Rate • VI Hàm Active • VII B ản đồ tổ chức Kohonen SOM (Kohonen Self -Organizing Maps) • VIII Hàm Neighborhood • IX Lưới Topology • X Một số hình dạng củ a lớp Kohonen • XI Thiết kế mạng Nơron • XII Các lĩnh vực ứng dụng mạng nơron • XIII Cài đặt mơi trường phát triển • XIV Các đoạn code sử dụng I Tổng quan v ề mạng nơron 1.1 Mạng nơron Mạng nơron nhân tạo, Artificaial Neural Network (ANN) gọi tắt m ạng nơron (neural network), mơ hình x lý thơng tin ph ỏng theo cách th ức xử lý thông tin c hệ nơron sinh học Nó đượ c tạo nên t m ột số lượng lớn phần tử (gọi phần t xử lý hay nơron) kết nối với thông qua liên k ết (gọi trọng số liên kết) làm việc thể thông để giải m ột vấn đề cụ thể 1.2 Mạng nơron ứng dụng lĩnh vự c Một mạng nơron nhân tạo đượ c cấu hình cho m ột ứng dụng cụ thể (nhận dạng mẫu, phân loại liệu,…) thông qua trình học từ mẫu huấn luyện Về ch ất học q trình hiệu chỉnh trọng số liên k ết gi ữa nơron II Cấu trúc nơron Cấu trúc tổng quát Giải thích ký hi ệu: • Tập đầu vào: tín hiệu vào (input signal) c nơron, tín hiệu thường đưa dạng vector N chiều • Tập liên k ết: Mỗi liên k ết thể trọng số (gọi trọng số liên k ết – Synaptic weight) Thông thường trọng s ố khởi tạo cách ngẫu nhiên thời điểm khởi t ạo mạng cập nhật liên tục q trình học mạng • Bộ tổng (Summing function): thường dùng để tính tổng tích đầu vào • Ngưỡng (cịn gọi m ột độ l ệch – bias): Ngưỡng thường đưa vào • Hàm truyền (Transfer function): Hàm dùng để giới hạn phạm vi đầu • Đầu ra: Là tín hiệu đầu c nơron, với nơron có tối đa đầu với trọng số liên k ết thành phần hàm truyền c nơron Nó nhận đầu vào k ết hàm t ngưỡng cho III Học có giám sát h ọc khơng có giám sát Một mạng nơron cần đào tạo trước đưa vào sử dụng Huấn luyện liên quan đến vi ệc đưa vào mạng nơron mẫu huấn luyện cho phép tìm hiểu cách hiệu chỉnh tr ọng số liên kết thông s ố khác m ạng nơ-ron phân loại thành hai loại dựa vào loại học tập 3.1 Mạng nơron học có giám sát: Trong phương pháp học có giám sát, m ạng nơron học từ mẫu Tập huấn luyện bao gồm tập hợp mẫu đầu vào kết đầu mong muốn tương ứng với mẫu đầu vào Các mạng nơron điều chỉnh trọng số liên k ết để tìm hiểu mối quan hệ cặp đầu vào-đầu Mạng nơron huấn luyện thành cơng hể sử dụng để tìm đầu phù hợp đầu vào hợp lệ Mục tiêu vi ệc học có giám sát mơ hình tồn cục tìm m ột hàm f, cho sẵn tập điểm có dạng (x, f(x)) 3.2 Trong phương pháp học khơng có giám sát: Mạng nơron nhận tập hợp đầu vào từ mơi trường bên ngồi Nó bí ẩn để tưởng tượng mạng có thể học hỏi từ thiết lập số đầu vào Tuy nhiên, có th ể để thức chứng minh r ằng mạng lưới khơng có giám sát có th ể xây dựng đại diện đầu vào sử dụng cho việc định IV Giải thuật lan truyền ngược Để huấn luyện m ạng nơron ta cung cấp cho huấn luyện cho phép học cách điều chỉnh trọng số liên kết mạng Một tập huấn luyện tập hợp mẫu huấn luyện Training Set = Set of training samples Một mẫu đào tạo cặp vector đầu vào mẫu vectơ đầu mong mu ốn Trong trường hợp đào tạo khơng có giám sát, vector đầu nên để null Chiều dài vector đầu vào nên tương tự số lượng nơron lớp đầu vào, độ dài vector đầu nên số nơron lớp đầu Training Sample = (input vector, desired vector) Backpropagation thuật toán m ột thuật toán giám sát thường sử dụng để huấn luyện mạng feed-forward Nó đượ c giới thiệu lần b ởi Paul Werbos cu ốn sách 'The Roots c Backpropagation' Ý tưởng xác định mạng nơron hoạt động với đầu vào mẫu, so sánh khác hành vi mong mu ốn sau điều chỉnh trọng số liên kết để giảm thiểu khác biệt Quá trình lặp lặp lại cho tất c ả mẫu đào tạo nhiều lần thiết lập để đảm bảo huấn luyện phù h ợp Việc huấn luyện mạng MLP thuật toán lan truyền ngược sai số bao gồm hai trình: Quá trình truy ền thẳng trình truyền ngược Trong trình truy ền thẳng, vector đầu vào cung cấp cho nơron mạng tín hiệu lan truyền lớp m ạng Cuối ta tính tập đầu thực mạng Trong suốt trình truyền thẳng, tất tr ọng số liên kết m ạng cố định Ngược lại, trình truyền ngược, tất tr ọng số liên kết hiệu chỉnh theo lu ật hiệu chỉnh tr ọng số Sai số mạng đo độ sai lệch gi ữa đầu thu với giá trị mục tiêu tương ứng Các sai số sau lan truyền ngược lớp mạng (từ lớp cuối đến lớp đầu tiên) Các trọng số liên k ết s ẽ hiệu chỉnh cho đầu thực mạng gần với giá trị mục tiêu tốt V Learning Rate Learning rate m ột thông số mà điều chỉnh việc làm để mạng noron học nhanh làm th ế để việc huấn luyện hiệu Hãy xem xét m ột nơron mà trải qua trình h ọc t ập Giả định tr ọng số m ột số liên kết mạng phần đào tạo 0,3 Khi m ạng gi ới thi ệu mẫu huấn luyện mới, thuật toán hu ấn luyện yêu c ầu liên kết thay đổi tr ọng số đến 0,7 để học mẫu phù hợp Nếu cập nhật trọng số lập tức, mạng nơron chắn học mẫu mới, có xu hướng quên tất mẫu học trước Điều trọng số (0,3) kết tất việc học mà trải qua Vì vậy, không trực tiếp thay đổi trọng số tới 0,7 Thay vào đó, tăng phần nhỏ (chọn 25%) c s ự thay đổi cần thiết Vì v ậy, tr ọng số liên kết thay đổi thành 0,4 chuyển sang m ẫu đào tạo Yếu tố (0,25 trường hợp này) gọi Learning Rate Căn theo cách này, tất mẫu huấn luyên huấn luyện m ột số thứ tự ngẫu nhiên Khi chu trình đào tạo lặp lặp lại nhiều lần, cuối mạng nơron học tất m ẫu có hiệu Learning rate m ột giá trị khoảng t đến Ch ọn giá trị gần khơng, địi hỏi số lượng lớn chu trình huấn luyện Điều làm cho trình huấn luyện chậm Mặt khác, learning rate lớn, trọng số khác độ l ệch hàm m ục tiêu dao động lớn mạng đạt đến trạng thái mà việc huấn luyện diễn vơ ích VI Hàm Active Hàm active m ạng xác định cách để có đầu neuron t tập đầu vào dựa thu ật toán bakcpropagation Các thuật toán bakcpropagation yêu c ầu hàm active để thỏa mãn tính liên t ục khả vi Nó u cầu cần có hàm active để dễ dàng tính tốn Một số hàm active Sigmoid, Linear, Logarit, Tan, Sin… 6.1 Mơ hình hàm : y = / (1 + Exp(-x)) Hình 6.1: Mơ hình hàm : y = / (1 + Exp(-x)) Hình 8.1: Hàm Gaussian Neighborhood Hình 8.2: Hàm Mexican-Hat Neighborhood IX Lưới Topology Trong đồ lớp Kohonen Layer lưới topology quy định cụ thể xếp nơron lưới hai chiều tạo thành l ớp Hàm Neighborhood áp dụng topology Có lưới Topology hay dùng hình lục giác hình chữ nhật Hình 9.1: Rectangular Topology X Hình 9.2: Hexagonal Topology Một số hình dạng l ớp Kohonen NeuronNetwork h ỗ trợ hàng cột vo trịn Tính dùng để tạo lớp Kohonen với hình dạng khác Hình 10.1: Dạng phẳng Hình 10.4: Dạng hình tr ụ XI Hình 10.2: Dạng đường thẳng Hình 10.3:Dạng hình vịng Hình 10.5:Dạng hình xuy ến Thiết kế mạng Nơron Thiết kế mạng nơron nhân tạo cho ứng dụng cụ thể liên quan đến việc lựa chọn loại mạng, tìm số thích hợp lớp ẩn, phương pháp thích hợp để khởi tạo trọng số, thuật tốn h ọc thích hợp, đào tạo, tỷ lệ học tập số lượng mẫu đào tạo để sử dụng Hầu hết thông số phụ thuộc vào ứng dụng mà mạng nơron thiết kế Dưới số hướng dẫn chung thiết kế mạng nơrron: 11.1 Số lượng lớp ẩn (trong m ạng Backpropagation) Một mạng lưới Backpropagation khơng có l ớp ẩn khơng thể thực phân loại khơng tuyến tính Vì vậy, lớp ẩn phải cho m ột mạng lưới backpropagation Hơn nữa, tốn học chứng minh mạng lưới backpropagation với lớp ẩn đào tạo phù hợp, dùng để xấp xỉ hàm Vì vậy, lớp ẩn lựa chọn tốt hầu hết trường hợp 10 Có nhiều lớp ẩn tăng tốc trình học t ập mạng đào tạo phù hợp xác với mẫu đào tạo không thực tốt d ữ liệu thử nghiệm Hi ệu ứng gọi overtraining nơi mạng lưới huấn luyện có xu hướng ghi nhớ mẫu huấn luyện thay học t ập chúng Mạng neurol ban đầ u Khởi tạo trọng số liên kết nơron có ảnh hưởng l ớn tới việc đào tạo tốc độ xác định hiệu đào tạo Thông thường, trọng số khởi tạo với giá trị ngẫu nhiên từ 0,5 đến +0,5 (giá trị cao có xu hướng kết khu vực bão hịa sau kích ho ạt, giá trị ban đầu nhỏ giá trị gần không) Mạng nơron thự c trình khởi tạo module pluggable Tuỳ chỉnh thuật tốn khởi tạo cắm vào b ằng cách thực Initializer giao di ện Số m ẫu huấn luyện Quyết định để mẫu đại diện cho chức huấn luyện thực tế tốt Thông thường, lỗi học tăng so với gia tăng kích thước tập huấn luyện, đồng thời ta nhận thấy giảm lỗi mạng thực tốt liệu thử nghiệm Một mối quan h ệ kích thước mạng s ố lượng tối ưu mẫu đào tạo tìm thấy XII Các lĩnh vực ứng dụng mạng nơron 12.1 Giải tốn Mạng trí tuệ nhân tạo (Artificial neural networks) ứng dụng giải toán lĩnh sau: • Bài tốn Function Modeling • Bài tốn phân loại (Classification Problems) • B tốn xử lý rút trích liệu (Data processing and feature extraction) 12.2 Phạm vi ứng d ụng Phạm vi ứng dụng trí tu ệ nhân tạo lớn: t ập đồn tài dùng để phân tích dự đốn tài chính, nhận dạng chữ ký, nhận dạng ảnh, nhận dạng chữ viết, nhận dạng sinh trắc học, mơ hình hóa hệ thống động, hệ thống t ự động hóa, h ệ thống chuyển từ dọng nói chữ viết, bóc tách dự liệu, trí tuệ nhân t ạo dùng trị chới máy tính, hệ thống xác đị nh đường giao thông tải, hệ thống máy bay t ự lái, etc 11 XIII Cài đặt môi trường phát triển 13.1 Ngơn ngữ lập trình Dự án viết ngôn ngữ MATLAB ngôn ngữ bậc cao, tích hợp khả tính tốn, hình ảnh hóa, lập trình mơi trường dễ sử dụng, vấn đề giải pháp trình bày lời thích tốn học Thường MATLAB dùng cho: • Tốn điện tốn • Phát triển thuật tốn • Dựng mơ hình, gi ả lập, tạo ngun mẫu • Phân tích, khám phám hình ảnh hóa liệu • Đồ họa khoa học kỹ thuật 13.2 Công cụ phát tri ển Sử dụng công cụ phát triển MATLAB: https://www.mathworks.com/products/matlab.html 13.3 NeuronNetwork.Core.Initializers namespace Có nhiều phương thức khởi tạo cho mạng như: ConstantFunction, NGuyenWidrowFunction, ZeroFunction, RandomFunction Norma lizedRandomFunction mô tả namespace 13.4 NeuronNetwork.Core.LearningRateFunctions namespace Namespace ch ứa hàm dùng cho Learning rate như: HyperbolicFunction, ExponentialFunction LinearFunction 13.5 NeuronNetwork.Core.BackPropagation namespace • ActivationNeuron : nơron mạng lan truyền ngược • BackpropagationSynapse : Các kết nối hai activation neurons • ActivationLayer : l ớp tổng quát hóa activation neurons • BackpropagationConnector : tập BackpropagationSynapses k ết nối hai activation layers • BackpropagationNetwork : M ột mạng lan truyền ngược • LinearLayer, LogarithmLayer, SigmoidLayer, SineLayer TanhLayer thừa kế 12 lớp ActivationLayer để triển khai thể hiên tương ứng với hàm activation functions 13.6 NeuronNetwork.Core.SOM namespace • PositionNeuron : m ột nơron a Kohonen network • KohonenSynapse : Liên kết nơron PositionNeuron • KohonenLayer : m ột layer PositionNeurons • KohonenConnector : tập hợp KohonenSynapses liên k ết Kohonen • KohonenNetwork : thể m ột Self-Organizing Map • LatticeTopology : định dạng lưới Layers lattice topology Hexagonal hay Rectangular • INeighborhoodFunction : Interface bi ểu diễn neighborhood function 13.7 NeuronNetwork.Core.SOM.NeighborhoodFunctions namespace • Namespace bao gơm class sau Gaussian Function Mexican HatFunction XIV Các đoạn code sử dụng 14.1 Tiền xử lý ảnh • Đọc ảnh chuy ển mức nh ị phân Ảnh có tên: Training.Bmp Đọc ảnh: I=imread(Training bmp); Hiển thị ảnh: Imshow(I) 13 Hình 14.1: Training.bmp • Chuyến ảnh mức xám: Igray=rgb2gray(I); Hiển thị ảnh: Imshow(I) Hình 14.2: I.bmp • Chuyển hình m ức xám mức nhị phân: Ibw=im2bw(Igray, graythresh(Igray)); Hiển thị hình: Imshow(Ibw) 14 Hình 14.3: Ibw.bmp • Xác định cạnh: Iedge=edge(uint8(Ibw)); Hiển thị ảnh: imshow(ledge) Hình 14.4: ledge.bmp • Tăng gấp đơi cạnh: Tạo biến cấu trúc se 2×2 se=strel('square', 2); Nới rộng biên: Jedge2mindilate(ledge, se); Hiển thị ảnh: Imshow(Tedge2) 15 Hình 14.5: Tedge2.bmp • Làm đầy đối tượng: Ifill=imfill(ledge2, 'holes'); Hiển thị ảnh: Imshow(Ifill) Hình 14.6: Ifill.bmp • Đánh dấu đối tượng, xác đị nh vị trí đối tượng: [Ilabelnum]=bwlabel(Ifill); disp(num); Iprops=regionprops(Ilabel); Ibox=[Iprops BoundingBox]; Ibox=reshape(Ibox, [450]); Kết quả: có num=50 đối tượng 16 • Vẽ hình chữ nhật bao quanh t ừng đôi tượng dựa ảnh gốc: Imshow(I) Hold on; For cnt=1:50 rectangle('position', Ibox(:, cnt), 'edgecolor', 'r'); end • Kết xác định đối tượng: Hình 14.7: Kết xác định đối tượng.bmp 14.2 Dùng mạng neural nhận dạng chữ • Tạo database cho đầu vào đầu • Trong chương trình sử dụng liệu đầu vào có 70 mẫu 40 phần từ từ ảnh phần ti ền xử lý Còn 70 mẫu 10 phần tử l ại dùng để tạo mẫu test • Code: For cnt=1: num Icroptemp=imcrop(Ifill, Ibox(: , cnt)); Icroptemp=imresize(Icroptemp, [40 28], 'nearest'); %Cácđổi tượng kích thước 40x28 Icrop(: , : , cnt)=Icroptemp; End %Tách đối tượng ảnh lưu vào matrận chiều Icrop Icrop=-Icrop; %Chuyển mức nghịch đảo (chữ đen trắng) For cnt=1:num %Giảm kích thước lần 17 Ptemp=Icrop(: , : , cnt); For cnt 1=1: [m, n]=size(Ptemp); n=round(n/2-0 5)+1; m=round(m/2-0 5)+1; fori=2: n Ptemp(: , i)=[]; end for i=2:m Ptemp(i, : )=[]; end end Pout(: , : , cnt)=Ptemp; End Psample=reshape(Pout, [7050]); %Chuy ển ma tr ận chiều sang ma trận chiều có 70 mẫu 50 ph ần tử Tạo database i=1 j=1; n=1; for j=1:4 while i