fbpx Thuật toán học Perceptron là gì? giải cách hoạt động của thuật Skip to main content
perceptron

Thuật toán học Perceptron là gì? giải cách hoạt động của thuật toán

Bài đăng này sẽ thảo luận về Thuật toán học tập Perceptron nổi tiếng, ban đầu được đề xuất bởi Frank Rosenblatt vào năm 1943, sau đó được Minsky và Papert tinh chỉnh và phân tích cẩn thận vào năm 1969. Đây là bài đăng tiếp theo các bài viết trước đây của tôi về mô hình nơ-ron McCulloch-Pitts và Mô hình Perceptron

Perceptron

Bạn chỉ có thể xem qua bài đăng trước đây của tôi về mô hình perceptron (được liên kết ở trên) nhưng tôi cho rằng bạn sẽ không làm như vậy. Vì vậy, ở đây, perceptron không phải là nơ-ron Sigmoid mà chúng ta sử dụng trong ANN hoặc bất kỳ mạng học sâu nào hiện nay.

Perceptron
Thuật toán Perceptron

Một perceptron duy nhất chỉ có thể được sử dụng để thực hiệncó thể phân tách tuyến tínhchức năng. Nó lấy cả đầu vào thực và boolean và liên kết một tập hợp trọng số với chúng, cùng với độ lệch (điều ngưỡng tôi đã đề cập ở trên). Chúng ta tìm hiểu các trọng số, chúng ta có được hàm. Hãy sử dụng perceptron để tìm hiểu hàm OR.

Perceptron

Điều đang diễn ra ở trên là chúng tôi đã xác định một vài điều kiện (tổng có trọng số phải lớn hơn hoặc bằng 0 khi đầu ra là 1) dựa trên đầu ra của hàm OR cho các bộ đầu vào khác nhau, chúng tôi đã giải quyết các trọng số dựa trên các điều kiện đó và chúng ta có một đường phân biệt hoàn hảo đầu vào tích cực với đầu vào tiêu cực.

Không có ý nghĩa gì? Có lẽ bây giờ là lúc bạn xem qua bài viết mà tôi đang nói đến. Minsky và Papert cũng đề xuất một cách nguyên tắc hơn để học các trọng số này bằng cách sử dụng một tập hợp các ví dụ (dữ liệu). Xin lưu ý rằng đây KHÔNG phải là nơ-ron Sigmoid và chúng tôi sẽ không thực hiện bất kỳ Giảm dần độ dốc nào.

Khái niệm cơ bản về đại số tuyến tính

Vectơ

Một vectơ có thể được định nghĩa theo nhiều cách. Đối với một nhà vật lý, vectơ là bất cứ thứ gì nằm ở bất kỳ đâu trong không gian, có độ lớn và hướng. Đối với một anh chàng CS, vectơ chỉ là một cấu trúc dữ liệu được sử dụng để lưu trữ một số dữ liệu - số nguyên, chuỗi, v.v. Đối với hướng dẫn này, tôi muốn bạn tưởng tượng một vectơ theo cách của Nhà toán học, trong đó vectơ là một mũi tên kéo dài trong không gian với đuôi ở gốc. Đây không phải là cách toán học tốt nhất để mô tả một vectơ nhưng miễn là bạn có trực giác, bạn sẽ ổn.

Biểu diễn vectơ

Một vectơ 2 chiều có thể được biểu diễn trên mặt phẳng 2D như sau:

biểu diễn vecto

Chuyển ý tưởng sang không gian 3 chiều, chúng ta có được một mũi tên trong không gian 3D như sau:

vecto

Tích số chấm của hai vectơ

Với cái giá phải trả là làm cho hướng dẫn này thậm chí còn nhàm chán hơn hiện tại, chúng ta hãy xem sản phẩm chấm là gì. Hãy tưởng tượng bạn có hai vectơ có kích thước oh n+1 , w và x , tích vô hướng của các vectơ này ( wx ) có thể được tính như sau:

Ở đây, w và x chỉ là hai mũi tên cô đơn trong không gian n+1 chiều (và theo trực giác, tích vô hướng của chúng định lượng mức độ một vectơ đi theo hướng của vectơ kia). Vì vậy, về mặt kỹ thuật, perceptron chỉ tính toán tích số chấm (trước khi kiểm tra xem nó lớn hơn hay nhỏ hơn 0). Đường ranh giới quyết định mà một perceptron đưa ra để phân biệt các ví dụ tích cực với các ví dụ tiêu cực thực sự chỉ là w . x = 0.

tích hai vecto

Góc giữa hai vectơ

Bây giờ, tích số chấm cũ có thể được tính theo cách khác nếu bạn biết góc giữa các vectơ và độ lớn riêng lẻ của chúng. Đây là cách thực hiện:

goc hai vecto

Ngược lại, bạn có thể tính được góc giữa hai vectơ, giá như bạn biết các vectơ, biết cách tính độ lớn của vectơ và tích vani của chúng.

goc hai vecto

Khi tôi nói cosin của góc giữa w và x bằng 0, bạn thấy gì? Tôi thấy mũi tên w vuông góc với mũi tên x trong không gian n+1 chiều (trung thực là trong không gian 2 chiều). Vì vậy, về cơ bản, khi tích vô hướng của hai vectơ bằng 0, chúng vuông góc với nhau.

Thiết lập vấn đề

thiếp lập vecto

Chúng tôi sẽ sử dụng perceptron để ước tính liệu tôi có xem phim dựa trên dữ liệu lịch sử với các thông tin đầu vào nêu trên hay không. Dữ liệu có các ví dụ tích cực và tiêu cực, tích cực là những bộ phim tôi đã xem, tức là 1. Dựa trên dữ liệu, chúng ta sẽ tìm hiểu các trọng số bằng thuật toán học perceptron. Để đơn giản về mặt trực quan, chúng tôi sẽ chỉ giả sử đầu vào hai chiều.

Thuật toán học Perceptron

Mục tiêu của chúng tôi là tìm ra vectơ w có thể phân loại hoàn hảo đầu vào dương và đầu vào âm trong dữ liệu của chúng tôi. Tôi sẽ đi thẳng vào thuật toán. Đây là:

thuật toán perceptron

Chúng ta khởi tạo w với một số vectơ ngẫu nhiên. Sau đó, chúng tôi lặp lại tất cả các ví dụ trong dữ liệu, ( P U N ) cả ví dụ tích cực và tiêu cực. Bây giờ nếu đầu vào x thuộc về P thì lý tưởng nhất là tích chấm wx sẽ là bao nhiêu? Tôi muốn nói lớn hơn hoặc bằng 0 vì đó là điều duy nhất mà người nhận cảm của chúng ta muốn vào cuối ngày, vì vậy hãy cho nó điều đó. Và nếu x thuộc về N , tích chấm PHẢI nhỏ hơn 0. Vì vậy, nếu bạn xem xét các điều kiện if trong vòng lặp while:

thuật toán perceptron

Trường hợp 1: Khi x thuộc P và tích vô hướng của nó wx < 0

Trường hợp 2: Khi x thuộc N và tích vô hướng của nó wx ≥ 0

Chỉ đối với những trường hợp này, chúng tôi đang cập nhật w được khởi tạo ngẫu nhiên . Mặt khác, chúng ta hoàn toàn không chạm vào w vì Trường hợp 1 và Trường hợp 2 đang vi phạm chính quy tắc của perceptron. Vì vậy, chúng ta đang cộng x với w (ahem cộng vectơ ahem) trong Trường hợp 1 và trừ x khỏi w trong Trường hợp 2.

Tại sao Quy tắc cập nhật được chỉ định lại có tác dụng?

Nhưng tại sao điều này lại có tác dụng? Nếu bạn đã hiểu lý do tại sao điều này lại hiệu quả thì bạn đã hiểu toàn bộ ý chính của bài đăng của tôi và bây giờ bạn có thể tiếp tục cuộc sống của mình, cảm ơn vì đã đọc, tạm biệt. Nhưng nếu bạn không chắc chắn tại sao những phép toán dường như tùy tiện này của x và w lại giúp bạn học được w hoàn hảo có thể phân loại P và N một cách hoàn hảo , hãy theo tôi.

Chúng ta đã thiết lập rằng khi x thuộc về P , chúng ta muốn wx > 0, quy tắc perceptron cơ bản. Điều chúng tôi muốn nói ở đây là khi x thuộc P , góc giữa w và x phải _____ lớn hơn 90 độ. Điền vào chỗ trống.

Trả lời: Góc giữa w và x phải nhỏ hơn 90 vì cosin của góc tỉ lệ với tích vô hướng.

goc hai vecto

Vì vậy, bất kể vectơ w có thể là gì, miễn là nó tạo một góc nhỏ hơn 90 độ với vectơ dữ liệu mẫu dương ( x E P ) và một góc lớn hơn 90 độ với vectơ dữ liệu mẫu âm ( x E N ), chúng ta thật tuyệt. Vì vậy, lý tưởng nhất là nó sẽ trông giống như thế này:

tích hai vecto

Vì vậy, bây giờ chúng tôi tin tưởng mạnh mẽ rằng góc giữa w và x sẽ nhỏ hơn 90 khi x thuộc lớp P và góc giữa chúng phải lớn hơn 90 khi x thuộc lớp N. Hãy tạm dừng và thuyết phục bản thân rằng những tuyên bố trên là đúng và bạn thực sự tin chúng. Đây là lý do tại sao bản cập nhật hoạt động:

goc hai vecto

Vì vậy, khi chúng ta thêm x vào w , điều chúng ta làm khi x thuộc P và wx < 0 (Trường hợp 1), về cơ bản chúng ta đang tăng giá trị cos(alpha) , nghĩa là chúng ta đang giảm giá trị alpha , góc giữa w và x , đó là những gì chúng tôi mong muốn . Và trực giác tương tự cũng đúng cho trường hợp x thuộc N và wx ≥ 0 (Trường hợp 2).

Đây là một mô phỏng đồ chơi về cách cuối cùng chúng ta có thể học w tạo ra một góc nhỏ hơn 90 đối với các ví dụ dương và hơn 90 đối với các ví dụ âm.

tích hai vecto

Bây giờ, không có lý do gì để bạn tin rằng điều này chắc chắn sẽ hội tụ cho tất cả các loại tập dữ liệu. Có vẻ như có thể xảy ra trường hợp w tiếp tục di chuyển xung quanh và không bao giờ hội tụ. Nhưng người ta đã chứng minh được rằng thuật toán này hội tụ.

Phần kết luận

Trong bài đăng này, chúng tôi đã nhanh chóng xem xét perceptron là gì. Sau đó chúng ta bắt đầu với một số kiến ​​thức cơ bản về đại số tuyến tính. Sau đó, chúng tôi xem xét Thuật toán học tập Perceptron và tiếp tục hình dung lý do tại sao nó hoạt động, tức là cách học các trọng số thích hợp.

Tags

About

Công ty thiết kế web app chuyên thiết kế web và các dịch vụ maketing digital, seo, google adword...