tiểu sử Đặc điểm Phân tích

Chức năng lỗi mạng thần kinh. Đào tạo mạng - lan truyền ngược

Thuật toán lan truyền ngược là một trong những phương pháp huấn luyện mạng nơ-ron truyền tiếp nhiều lớp, còn được gọi là các tri giác đa lớp. Perceptron đa lớp được sử dụng thành công để giải quyết nhiều vấn đề phức tạp.

Đào tạo bằng thuật toán lan truyền ngược lỗi bao gồm hai lần đi qua tất cả các lớp của mạng: tiến và lùi. Trong chuyển tiếp, vectơ đầu vào được đưa đến lớp đầu vào của mạng thần kinh, sau đó nó truyền qua mạng từ lớp này sang lớp khác. Kết quả là, một tập hợp các tín hiệu đầu ra được tạo ra, đây là phản hồi thực tế của mạng đối với một hình ảnh đầu vào nhất định. Trong quá trình chuyển tiếp, tất cả các trọng số khớp thần kinh của mạng được cố định. Trong quá trình truyền ngược, tất cả các trọng số khớp thần kinh được điều chỉnh theo quy tắc sửa lỗi, cụ thể là: đầu ra thực tế của mạng bị trừ đi so với đầu ra mong muốn, dẫn đến tín hiệu lỗi. Tín hiệu này sau đó lan truyền qua mạng theo hướng ngược lại với hướng của các kết nối khớp thần kinh. Do đó tên - thuật toán lan truyền ngược. Trọng số synap được điều chỉnh để làm cho đầu ra của mạng càng gần với đầu ra mong muốn càng tốt.

Hãy xem xét hoạt động của thuật toán chi tiết hơn. Giả sử chúng ta cần huấn luyện mạng thần kinh sau bằng thuật toán lan truyền ngược:

Trong hình dưới đây, các quy ước sau đây được sử dụng:

Là một chức năng kích hoạt trong các tri giác đa lớp, theo quy luật, chức năng kích hoạt sigmoidal được sử dụng, cụ thể là chức năng logistic:

ở đâu là tham số độ dốc của hàm sigmoidal. Bằng cách thay đổi tham số này, có thể xây dựng các hàm với độ dốc khác nhau. Hãy đảm bảo rằng đối với tất cả các lý do tiếp theo, nó sẽ được sử dụng chính xác chức năng kích hoạt logistic, chỉ được biểu thị bằng công thức trên.

Đường sigmoid thu hẹp phạm vi thay đổi sao cho giá trị nằm trong khoảng từ 0 đến 1. Các mạng thần kinh nhiều lớp có sức mạnh đại diện lớn hơn các mạng một lớp chỉ khi có sự phi tuyến tính. Hàm co lại cung cấp tính phi tuyến tính cần thiết. Trong thực tế, có rất nhiều chức năng có thể được sử dụng. Thuật toán lan truyền ngược chỉ yêu cầu hàm khả vi ở mọi nơi. Sigmoid đáp ứng yêu cầu này. Ưu điểm bổ sung của nó là kiểm soát khuếch đại tự động. Đối với các tín hiệu yếu (tức là khi gần bằng 0), đường cong đầu vào-đầu ra có độ dốc lớn, mang lại mức tăng lớn. Khi tín hiệu trở nên lớn hơn, mức tăng giảm xuống. Do đó, mạng nhận được các tín hiệu lớn mà không bị bão hòa và các tín hiệu yếu đi qua mạng mà không bị suy giảm quá mức.

Mục tiêu của đào tạo mạng Một thuật toán lan truyền ngược lỗi là một sự điều chỉnh các trọng số của nó sao cho việc áp dụng một tập hợp đầu vào nhất định dẫn đến tập hợp đầu ra cần thiết. Để cho ngắn gọn, các tập hợp đầu vào và đầu ra này sẽ được gọi là vectơ. Trong quá trình đào tạo, giả định rằng đối với mỗi vectơ đầu vào có một vectơ đích được ghép nối xác định đầu ra được yêu cầu. Họ cùng nhau được gọi là cặp đào tạo. Mạng được đào tạo trên nhiều cặp.

Tiếp theo:

  1. Khởi tạo trọng số synap với các giá trị ngẫu nhiên nhỏ.
  2. Chọn cặp huấn luyện tiếp theo từ tập huấn luyện; cung cấp vectơ đầu vào cho đầu vào của mạng.
  3. Tính toán đầu ra của mạng.
  4. Tính toán sự khác biệt giữa đầu ra mạng và đầu ra mong muốn (vectơ mục tiêu của cặp huấn luyện).
  5. Điều chỉnh trọng số mạng để giảm thiểu lỗi (như hình bên dưới).
  6. Lặp lại các bước từ 2 đến 5 cho mỗi vectơ của tập huấn luyện cho đến khi lỗi trên toàn tập đạt đến mức chấp nhận được.

Các thao tác được thực hiện ở bước 2 và 3 tương tự như các thao tác được thực hiện trong quá trình vận hành mạng đã được đào tạo, tức là một vectơ đầu vào được đưa vào và kết quả đầu ra được tính toán. Các tính toán được thực hiện trong các lớp. Trên hình. 1, đầu tiên, đầu ra của các nơ-ron của lớp được tính toán (lớp là đầu vào, có nghĩa là không có phép tính nào diễn ra trong đó), sau đó chúng được sử dụng làm đầu vào của lớp, đầu ra của các nơ-ron của lớp là được tính toán, tạo thành vectơ đầu ra của mạng. Bước 2 và 3 hình thành cái được gọi là chuyển tiếp khi tín hiệu truyền qua mạng từ đầu vào đến đầu ra.

Bước 4 và 5 tạo thành "back pass" trong đó tín hiệu lỗi được tính toán truyền trở lại qua mạng và được sử dụng để điều chỉnh trọng số.

Chúng ta hãy xem xét kỹ hơn bước 5 - điều chỉnh trọng số mạng. Có hai trường hợp cần được nhấn mạnh ở đây.

Trường hợp 1. Điều chỉnh trọng số khớp thần kinh của lớp đầu ra

Ví dụ, đối với mô hình mạng thần kinh trong Hình. 1, đây sẽ là các trọng số có ký hiệu sau: và . Hãy xác định rằng chỉ số sẽ biểu thị nơ-ron mà trọng lượng khớp thần kinh đi ra và nơ-ron mà nó đi vào:

Hãy để chúng tôi giới thiệu giá trị , bằng với chênh lệch giữa đầu ra bắt buộc và đầu ra thực, nhân với đạo hàm của hàm kích hoạt logistic (xem công thức của hàm kích hoạt logistic ở trên):

Khi đó, trọng số của lớp đầu ra sau khi hiệu chỉnh sẽ bằng:

Dưới đây là một ví dụ về tính toán cho trọng lượng khớp thần kinh:

Trường hợp 2. Điều chỉnh Trọng số Synaptic của Lớp ẩn

Đối với mô hình mạng thần kinh trong hình. 1, đây sẽ là các trọng số tương ứng với các lớp và . Hãy xác định rằng chỉ số sẽ biểu thị nơ-ron mà trọng lượng khớp thần kinh đi ra và nơ-ron mà nó đi vào (chú ý đến sự xuất hiện của một biến mới ).

Prudnikov Ivan Alekseevich
MIREA(MTU)

Chủ đề về mạng nơ-ron đã được đề cập trong nhiều tạp chí, nhưng hôm nay tôi muốn giới thiệu với độc giả thuật toán huấn luyện mạng nơ-ron nhiều lớp bằng phương pháp lan truyền ngược và cung cấp cách triển khai phương pháp này.

Tôi muốn đặt trước ngay rằng tôi không phải là chuyên gia trong lĩnh vực mạng lưới thần kinh, vì vậy tôi mong đợi những lời phê bình, nhận xét và bổ sung mang tính xây dựng từ độc giả.

phần lý thuyết

Tài liệu này giả định rằng bạn đã làm quen với những kiến ​​thức cơ bản về mạng nơ-ron, tuy nhiên, tôi cho rằng có thể giới thiệu cho người đọc chủ đề này mà không cần phải trải qua những thử thách không cần thiết về lý thuyết mạng nơ-ron. Vì vậy, đối với những người lần đầu tiên nghe thấy cụm từ "mạng nơ-ron", tôi đề xuất coi mạng nơ-ron là một đồ thị có hướng có trọng số, các nút (nơ-ron) được sắp xếp theo lớp. Ngoài ra, một nút của một lớp có liên kết đến tất cả các nút của lớp trước đó. Trong trường hợp của chúng tôi, một biểu đồ như vậy sẽ có các lớp đầu vào và đầu ra, các nút tương ứng đóng vai trò là đầu vào và đầu ra. Mỗi nút (nơ-ron) có một chức năng kích hoạt - chức năng chịu trách nhiệm tính toán tín hiệu ở đầu ra của nút (nơ-ron). Ngoài ra còn có khái niệm về sự dịch chuyển, đó là một nút, ở đầu ra của nó luôn xuất hiện. Trong bài viết này, chúng ta sẽ xem xét quá trình học của mạng nơ-ron giả định có sự hiện diện của "giáo viên", tức là quá trình học trong đó việc học diễn ra bằng cách cung cấp cho mạng một chuỗi các ví dụ huấn luyện với các phản hồi chính xác.
Như với hầu hết các mạng thần kinh, mục tiêu của chúng tôi là đào tạo mạng theo cách sao cho đạt được sự cân bằng giữa khả năng mạng đưa ra phản hồi chính xác cho dữ liệu đầu vào được sử dụng trong quá trình học (ghi nhớ) và khả năng tạo ra kết quả chính xác để đáp ứng với dữ liệu đầu vào, tương tự nhưng không giống với kết quả được sử dụng trong đào tạo (nguyên tắc tổng quát hóa). Huấn luyện mạng bằng phương pháp lan truyền ngược lỗi bao gồm ba giai đoạn: cung cấp dữ liệu cho đầu vào, tiếp theo là truyền dữ liệu theo hướng của đầu ra, tính toán và lan truyền ngược lỗi tương ứng và điều chỉnh trọng số. Sau khi đào tạo, nó chỉ có nhiệm vụ cung cấp dữ liệu cho đầu vào của mạng và phân phối chúng theo hướng của đầu ra. Đồng thời, nếu việc đào tạo mạng có thể là một quá trình khá dài, thì việc tính toán trực tiếp kết quả của mạng được đào tạo là rất nhanh. Ngoài ra, có rất nhiều biến thể của phương pháp lan truyền ngược được thiết kế để tăng tốc độ của quá trình học tập.
Cũng cần lưu ý rằng mạng nơ-ron một lớp bị hạn chế đáng kể về kiểu dữ liệu đầu vào mà nó phải học, trong khi mạng nhiều lớp (có một hoặc nhiều lớp ẩn) không có nhược điểm như vậy. Tiếp theo, một mô tả sẽ được đưa ra về một mạng lưới thần kinh lan truyền ngược tiêu chuẩn.

Ngành kiến ​​​​trúc

Hình 1 cho thấy một mạng nơ-ron nhiều lớp với một lớp nơ-ron ẩn (phần tử Z).

Các nơ-ron đại diện cho đầu ra của mạng (ký hiệu là Y) và các nơ-ron ẩn có thể bị sai lệch (như trong hình). Phần bù tương ứng với đầu ra Y k được ký hiệu là w ok , phần tử ẩn của Z j - V oj . Những sai lệch này đóng vai trò là trọng số trên các kết nối đến từ các nơ-ron, đầu ra của chúng luôn xuất hiện 1 (trong Hình 1, chúng được hiển thị, nhưng ngụ ý thường không được hiển thị rõ ràng). Ngoài ra, các mũi tên trong Hình 1 cho thấy sự di chuyển của thông tin trong giai đoạn phổ biến dữ liệu từ đầu vào đến đầu ra. Trong quá trình học, các tín hiệu truyền theo hướng ngược lại.

Mô tả thuật toán

Thuật toán được trình bày dưới đây có thể áp dụng cho mạng thần kinh có một lớp ẩn, đây là một tình huống hợp lệ và phù hợp cho hầu hết các ứng dụng. Như đã đề cập trước đó, đào tạo mạng bao gồm ba giai đoạn: cung cấp dữ liệu đào tạo cho đầu vào của mạng, lan truyền ngược lỗi và điều chỉnh trọng số. Trong giai đoạn đầu tiên, mỗi nơ-ron đầu vào X i nhận một tín hiệu và phát tín hiệu đó đến từng nơ-ron ẩn Z 1 ,Z 2 ...,Z p . Sau đó, mỗi nơ-ron ẩn sẽ tính toán kết quả của hàm kích hoạt (hàm mạng) của nó và phát tín hiệu Z j của nó tới tất cả các nơ-ron đầu ra. Lần lượt, mỗi nơ-ron đầu ra Y k , tính toán kết quả của hàm kích hoạt Y k , không gì khác hơn là tín hiệu đầu ra của nơ-ron này cho dữ liệu đầu vào tương ứng. Trong quá trình học, mỗi nơ-ron ở đầu ra của mạng so sánh giá trị Y k được tính toán với t k (giá trị đích) do giáo viên cung cấp, xác định giá trị lỗi phù hợp cho mẫu đầu vào đã cho. Dựa trên sai số này, σ k (k = 1,2,...m) được tính toán. σ k được sử dụng khi lan truyền lỗi từ Y k đến tất cả các thành phần mạng của lớp trước đó (nơ-ron ẩn được kết nối với Y k) và sau đó khi thay đổi trọng số của các kết nối giữa các nơ-ron đầu ra và các nơ-ron ẩn. Tương tự, σj (j = 1,2,...p) được tính cho mỗi nơron ẩn Z j . Mặc dù không cần truyền lỗi đến lớp đầu vào, nhưng σj được sử dụng để thay đổi trọng số của các kết nối giữa các nơ-ron trong lớp ẩn và các nơ-ron đầu vào. Sau khi tất cả σ đã được xác định, trọng số của tất cả các liên kết được điều chỉnh đồng thời.

chỉ định:

Ký hiệu sau đây được sử dụng trong thuật toán học mạng:

X Vector dữ liệu huấn luyện đầu vào X = (X 1 , X 2 ,...,X i ,...,X n).
t Vector kết quả đầu ra mục tiêu do giáo viên cung cấp t = (t 1 , t 2 ,...,t k ,...,t m)
σ k Thành phần điều chỉnh trọng số của các kết nối w jk , tương ứng với sai số của nơ ron đầu ra Y k ; đồng thời, thông tin về lỗi của nơ-ron Y k , được phân phối cho các nơ-ron của lớp ẩn có liên quan đến Y k .
σ j Thành phần điều chỉnh trọng số của các kết nối v ij , tương ứng với thông tin lỗi được truyền từ lớp đầu ra đến nơ ron ẩn Z j .
một tỷ lệ học tập.
X i Nơron đầu vào có chỉ số i. Đối với nơ-ron đầu vào, tín hiệu đầu vào và đầu ra giống nhau - X i .
v oj Độ lệch của nơ ron ẩn j.
Z j Nơron ẩn j; Tổng giá trị được cung cấp cho đầu vào của phần tử ẩn Z j được ký hiệu là Z_in j: Z_in j = v oj +∑x i *v ij
Tín hiệu ở đầu ra Z j (kết quả của việc áp dụng hàm kích hoạt cho Z_in j) được ký hiệu là Z j: Z j = f (Z_in j)
w ok Độ lệch nơ ron đầu ra.
Y k Nơron đầu ra dưới chỉ số k; Tổng giá trị cung cấp cho đầu vào của phần tử đầu ra Y k được ký hiệu là Y_in k: Y_in k = w ok + ∑ Z j *w jk . Tín hiệu đầu ra Y k (kết quả của việc áp dụng chức năng kích hoạt cho Y_in k) được ký hiệu là Y k:

chức năng kích hoạt

Hàm kích hoạt trong thuật toán lan truyền ngược phải có một số đặc điểm quan trọng: tính liên tục, khả vi và không đơn điệu giảm. Hơn nữa, để tăng hiệu quả tính toán, mong muốn đạo hàm của nó dễ dàng được tìm thấy. Thông thường, chức năng kích hoạt cũng là một chức năng bão hòa. Một trong những hàm kích hoạt được sử dụng phổ biến nhất là hàm sigmoid nhị phân với phạm vi (0, 1) và được định nghĩa là:

Một hàm kích hoạt được sử dụng rộng rãi khác là sigmoid lưỡng cực với phạm vi (-1, 1) và được định nghĩa là:


thuật toán học tập

Thuật toán học trông như thế này:

Khởi tạo trọng số (trọng số của tất cả các liên kết được khởi tạo với các giá trị nhỏ ngẫu nhiên).

Miễn là điều kiện kết thúc của thuật toán là sai, các bước 2 - 9 được thực hiện.

Đối với mỗi cặp (dữ liệu, giá trị đích), các bước 3 - 8 được thực hiện.

Truyền dữ liệu từ đầu vào đến đầu ra:

Bước 3
Mỗi nơ-ron đầu vào (X i , i = 1,2,...,n) gửi tín hiệu nhận được X i tới tất cả các nơ-ron trong lớp (ẩn) tiếp theo.

Mỗi nơ-ron ẩn (Z j , j = 1,2,..., p) tính tổng các tín hiệu đến có trọng số: z_in j = v oj + ∑ x i *v ij và áp dụng hàm kích hoạt: z j = f (z_in j) Sau đó gửi kết quả cho tất cả các phần tử của lớp tiếp theo (đầu ra).

Mỗi nơ-ron đầu ra (Y k , k = 1,2,...m) tính tổng các tín hiệu đầu vào có trọng số: Y_in k = w ok + ∑ Z j *w jk và áp dụng hàm kích hoạt, tính toán tín hiệu đầu ra: Y k = f(Y_trong k).

Lan truyền ngược:

Mỗi nơ-ron đầu ra (Y k , k = 1,2,...m) nhận giá trị đích - giá trị đầu ra đúng với tín hiệu đầu vào đã cho và tính toán lỗi: σ k = (t k - y k)*f " ( y_in k) cũng tính toán lượng mà theo đó trọng số của kết nối w jk sẽ thay đổi: Δw jk = a * σ k * z j Ngoài ra, nó tính toán giá trị điều chỉnh bù: Δw ok = a*σ k và gửi σ k đến các nơ-ron ở lớp trước .

Mỗi nơ-ron ẩn (z j , j = 1,2,...p) tính tổng các lỗi đến (từ các nơ-ron ở lớp tiếp theo) σ_in j = ∑ σ k * w jk và tính giá trị lỗi bằng cách nhân giá trị kết quả với đạo hàm của hàm kích hoạt: σ j = σ_in j * f "(z_in j), cũng tính toán lượng mà trọng lượng liên kết vij sẽ thay đổi: Δv ij = a * σ j * x i . Ngoài ra, tính toán lượng điều chỉnh bù : v oj = a * σ j

Bước 8. Thay đổi trọng số.

Mỗi nơ-ron đầu ra (y k , k = 1,2,...,m) thay đổi trọng số của các kết nối của nó với phần tử sai lệch và nơ-ron ẩn: w jk (mới) = w jk (cũ) + Δw jk
Mỗi nơ-ron ẩn (z j , j = 1,2,...p) thay đổi trọng số của các kết nối của nó với phần tử thiên vị và nơ-ron đầu ra: v ij (mới) = v ij (cũ) + Δv ij

Kiểm tra điều kiện kết thúc của thuật toán.
Điều kiện để chấm dứt hoạt động của thuật toán có thể là đạt được tổng sai số bậc hai của kết quả ở đầu ra mạng ở mức tối thiểu đặt trước trong quá trình học hoặc thực hiện một số lần lặp nhất định của thuật toán. Thuật toán dựa trên một phương pháp được gọi là giảm độ dốc. Tùy thuộc vào dấu hiệu, độ dốc của hàm (trong trường hợp này, giá trị của hàm là lỗi và các tham số là trọng số của các liên kết trong mạng) đưa ra hướng mà các giá trị của hàm tăng ( hoặc giảm) nhanh nhất.

Để đào tạo một mạng nhiều lớp vào năm 1986, Rummelhart và Hinton (Rummelhart D.E., Hinton G.E., Williams R.J., 1986) đã đề xuất một thuật toán lan truyền ngược lỗi. Nhiều ấn phẩm về các ứng dụng công nghiệp của mạng đa lớp với thuật toán học tập này đã xác nhận hiệu suất cơ bản của nó trong thực tế.

Lúc đầu, một câu hỏi hợp lý được đặt ra - tại sao không thể áp dụng quy tắc  Rosenblatt đã biết (xem Bài giảng 4) để huấn luyện một perceptron đa lớp? Câu trả lời là để áp dụng phương pháp Rosenblatt, không chỉ cần biết kết quả đầu ra hiện tại của nơ-ron y mà còn cả kết quả cần thiết. Chính xác giá trị Y. Trong trường hợp mạng nhiều lớp, các giá trị chính xác này chỉ khả dụng cho các nơ-ron ngày cuối tuần lớp. Các giá trị đầu ra cần thiết cho các nơ-ron lớp ẩn là không xác định, điều này hạn chế việc áp dụng quy tắc .

Ý tưởng chính đằng sau lan truyền ngược là làm thế nào để có được ước tính lỗi cho các nơ-ron lớp ẩn. thông báo rằng nổi tiếng lỗi do các nơ-ron trong lớp đầu ra phát sinh do không xác định cho đến các lỗi của các nơ-ron của các lớp ẩn. Giá trị của kết nối synap giữa nơ ron của lớp ẩn và nơ ron đầu ra càng lớn thì lỗi của lớp thứ nhất càng ảnh hưởng đến lỗi của lớp thứ hai. Do đó, ước tính lỗi của các phần tử của các lớp ẩn có thể được lấy dưới dạng tổng trọng số của các lỗi của các lớp tiếp theo. Trong quá trình đào tạo, thông tin được phân phối từ các lớp thấp hơn của hệ thống phân cấp lên các lớp cao hơn và ước tính lỗi do mạng thực hiện theo hướng ngược lại, điều này được phản ánh trong tên của phương thức.

Chúng ta hãy xem xét kỹ hơn về thuật toán này. Để đơn giản hóa ký hiệu, chúng tôi giới hạn bản thân trong tình huống mạng chỉ có một lớp ẩn. Chúng tôi biểu thị ma trận các hệ số trọng số từ đầu vào đến lớp ẩn bằng W và ma trận trọng số kết nối các lớp ẩn và lớp đầu ra là V. Đối với các chỉ số, chúng tôi sẽ sử dụng ký hiệu sau: chúng tôi sẽ chỉ đánh số các đầu vào theo chỉ mục i, các phần tử của lớp ẩn theo chỉ số j và đầu ra tương ứng theo chỉ số k.

Cho mạng được huấn luyện trên mẫu (X,Y),=1..p. Hoạt động của các nơ-ron sẽ được ký hiệu bằng chữ cái y nhỏ với chỉ số tương ứng và tổng trọng số đầu vào của các nơ-ron sẽ được ký hiệu bằng chữ cái nhỏ x.

Cấu trúc chung của thuật toán tương tự như đã thảo luận trong Bài giảng 4, với sự phức tạp của các công thức điều chỉnh trọng số.

Bảng 6.1. Thuật toán lan truyền ngược.

Các giá trị ban đầu của trọng số của tất cả các nơ-ron của tất cả các lớp V(t=0) và W(t=0) được coi là các số ngẫu nhiên.

Mạng được hiển thị với hình ảnh đầu vào X, kết quả là hình ảnh đầu ra yY được hình thành. Trong trường hợp này, các nơ-ron tuần tự từ lớp này sang lớp khác hoạt động theo các công thức sau:

lớp ẩn

lớp đầu ra

Ở đây f(x) là một hàm sigmoid được xác định bởi công thức (6.1)

Hàm sai số bậc hai của mạng đối với ảnh đầu vào đã cho có dạng:

Chức năng này sẽ được giảm thiểu. Phương pháp tối ưu hóa độ dốc cổ điển bao gồm việc sàng lọc lặp đi lặp lại đối số theo công thức:

Hàm lỗi không phụ thuộc rõ ràng vào trọng số V jk , vì vậy chúng tôi sử dụng các công thức để phân biệt ẩn của một hàm phức tạp:

Ở đây, một tính chất hữu ích của hàm sigmoid f(x) được tính đến: đạo hàm của nó chỉ được biểu thị thông qua giá trị của chính hàm đó, f’(x)=f(1-f). Do đó, tất cả các giá trị cần thiết để điều chỉnh trọng số của lớp đầu ra V đã thu được.

Bước này điều chỉnh trọng số của lớp ẩn. Phương pháp gradient vẫn cho:

Các đạo hàm được tính bằng các công thức giống nhau, ngoại trừ một số phức tạp của công thức cho sai số  j .

Khi tính toán  j, nguyên tắc lan truyền ngược của sai số đã được áp dụng ở đây: đạo hàm riêng chỉ được lấy đối với các biến tiếp theo lớp. Theo các công thức thu được, trọng số của các nơ-ron trong lớp ẩn được sửa đổi. Nếu có một số lớp ẩn trong mạng thần kinh, quy trình lan truyền ngược được áp dụng tuần tự cho từng lớp, bắt đầu từ lớp trước lớp đầu ra và tiếp tục đến lớp sau lớp đầu vào. Trong trường hợp này, các công thức giữ nguyên dạng của chúng bằng cách thay thế các phần tử của lớp đầu ra bằng các phần tử của lớp ẩn tương ứng.

Các bước 1-3 được lặp lại cho tất cả các vectơ huấn luyện. Quá trình huấn luyện kết thúc khi tổng sai số nhỏ hoặc đạt đến số lần lặp tối đa cho phép, như trong phương pháp huấn luyện Rosenblatt.

Như có thể thấy từ mô tả của các bước 2-3, việc học được rút gọn thành việc giải quyết vấn đề tối ưu hóa hàm sai số bằng phương pháp gradient. Toàn bộ "muối" của lan truyền ngược lỗi là để ước tính các nơ-ron của các lớp ẩn, bạn có thể lấy tổng trọng số của các lỗi của lớp tiếp theo.

Tham số h mang ý nghĩa tốc độ học và được chọn đủ nhỏ để phương pháp hội tụ. Một vài nhận xét bổ sung cần được thực hiện về sự hội tụ. Đầu tiên, thực tế cho thấy rằng sự hội tụ của phương pháp lan truyền ngược là rất chậm. Tốc độ hội tụ thấp là một “căn bệnh di truyền” của tất cả các phương pháp gradient, vì hướng cục bộ của gradient hoàn toàn không trùng với hướng đến mức tối thiểu. Thứ hai, việc điều chỉnh trọng số được thực hiện độc lập cho từng cặp ảnh mẫu huấn luyện. Đồng thời, nói chung, việc cải thiện hiệu suất trên một số cặp nhất định có thể dẫn đến giảm hiệu suất trên các hình ảnh trước đó. Trong trường hợp này, Khôngđáng tin cậy (ngoại trừ một thực tế rất rộng rãi của việc áp dụng phương pháp) đảm bảo sự hội tụ.

Các nghiên cứu chỉ ra rằng để biểu diễn một ánh xạ hàm tùy ý được cung cấp bởi tập huấn luyện, chỉ cần Hai lớp tế bào thần kinh. Tuy nhiên, trong thực tế, trong trường hợp các chức năng phức tạp, việc sử dụng nhiều hơn một lớp ẩn có thể tiết kiệm tổng số nơ-ron.

Ở phần cuối của bài giảng, chúng tôi sẽ đưa ra nhận xét về việc điều chỉnh ngưỡng của các nơ-ron. Dễ dàng thấy rằng ngưỡng của một nơ ron có thể được tạo ra tương đương với trọng số bổ sung được kết nối với đầu vào giả, bằng -1. Thật vậy, chọn W 0 =, x 0 = -1 và bắt đầu tính tổng từ 0, chúng ta có thể xem xét một nơ-ron có ngưỡng bằng 0 và thêm một đầu vào:

Các đầu vào nơ-ron bổ sung tương ứng với các ngưỡng được hiển thị trong Hình. 6.1 với hình vuông tối. Lưu ý đến nhận xét này, tất cả phép tính tổng trên các công thức đầu vào được trình bày trong thuật toán lan truyền ngược bắt đầu từ chỉ số 0.

Thuật toán lan truyền ngược

Từ đồng nghĩa: Thuật toán BackProp, Thuật toán lan truyền ngược, BackProp

Đăng nhập: Mạng thần kinh (phân loại) (bộ xử lý), Mạng thần kinh (hồi quy) (bộ xử lý)

Thuật toán lan truyền ngược là một thuật toán phổ biến để huấn luyện các mạng thần kinh chuyển tiếp nguồn cấp dữ liệu lớp phẳng (các tri giác đa lớp). Đề cập đến các phương pháp học có giám sát, vì vậy nó yêu cầu các giá trị mục tiêu được thiết lập trong các ví dụ huấn luyện. Nó cũng là một trong những thuật toán học máy nổi tiếng nhất.

Ý tưởng của thuật toán dựa trên việc sử dụng lỗi đầu ra của mạng thần kinh:

để tính toán các giá trị hiệu chỉnh cho trọng số của các nơ-ron trong các lớp ẩn của nó, trong đó là số lượng nơ-ron đầu ra trong mạng, là giá trị đích và là giá trị đầu ra thực tế. Thuật toán được lặp đi lặp lại và sử dụng nguyên tắc học “từng bước” (học trực tuyến), khi trọng số của các nơ-ron mạng được điều chỉnh sau khi một ví dụ huấn luyện được đưa vào đầu vào của nó.

Tại mỗi lần lặp lại, có hai lần truyền mạng - tiến và lùi. Trên đường truyền trực tiếp, vectơ đầu vào lan truyền từ đầu vào mạng đến đầu ra của nó và tạo thành một số vectơ đầu ra tương ứng với trạng thái (thực tế) hiện tại của các trọng số. Sau đó, lỗi của mạng thần kinh được tính là sự khác biệt giữa giá trị thực và giá trị mục tiêu. Khi truyền ngược lại, lỗi này lan truyền từ đầu ra mạng đến đầu vào của nó và trọng số nơ-ron được sửa theo quy tắc:

đâu là trọng số của kết nối thứ i của nơ-ron thứ j;

Xét rằng tổng đầu ra của nơ ron thứ j bằng

nó có thể được chỉ ra rằng

Từ biểu thức cuối cùng, suy ra rằng vi phân của hàm kích hoạt của các nơ-ron mạng phải tồn tại và không bằng 0 tại bất kỳ điểm nào, tức là hàm kích hoạt phải khả vi trên toàn bộ dòng số. Do đó, để áp dụng phương pháp lan truyền ngược, các hàm kích hoạt sigmoidal như tiếp tuyến logistic hoặc hyperbolic được sử dụng.

Do đó, thuật toán sử dụng cái gọi là giảm dần độ dốc ngẫu nhiên, "di chuyển" trong không gian trọng lượng đa chiều theo hướng phản độ dốc để đạt được hàm lỗi tối thiểu.

Trong thực tế, quá trình huấn luyện không được tiếp tục cho đến khi mạng được tinh chỉnh đến mức tối thiểu của hàm sai số, mà cho đến khi đạt được mức xấp xỉ đủ chính xác của nó. Điều này một mặt sẽ làm giảm số lần lặp lại đào tạo và mặt khác, tránh đào tạo lại mạng.

Hiện tại, nhiều sửa đổi của thuật toán lan truyền ngược đã được phát triển. Ví dụ: học không được sử dụng “theo bước”, khi lỗi đầu ra được tính toán và trọng số được sửa cho từng ví dụ, nhưng “theo kỷ nguyên” ở chế độ ngoại tuyến, khi trọng số được thay đổi sau tất cả các ví dụ về đào tạo bộ được đưa vào đầu vào mạng và lỗi được tính trung bình cho tất cả các ví dụ.

Đào tạo dựa trên Epoch mạnh mẽ hơn đối với các giá trị ngoại lệ và giá trị ngoại lệ của biến mục tiêu bằng cách lấy trung bình sai số trên nhiều ví dụ. Nhưng đồng thời, xác suất thuật toán bị mắc kẹt trong cực tiểu cục bộ tăng lên. Điều này ít có khả năng xảy ra đối với học từng bước, vì việc sử dụng các ví dụ riêng lẻ tạo ra "tiếng ồn" "đẩy" thuật toán ra khỏi các hố của địa hình dốc.

Ưu điểm của thuật toán lan truyền ngược bao gồm dễ thực hiện và chống lại sự bất thường và ngoại lệ trong dữ liệu. Những nhược điểm bao gồm:

  • quá trình học tập dài vô tận:
  • khả năng "tê liệt mạng", khi ở các giá trị lớn, điểm vận hành của hàm kích hoạt nằm trong vùng bão hòa của sigmoid và đạo hàm trong biểu thức (1) trở nên gần bằng 0 và thực tế không xảy ra hiệu chỉnh trọng số và quá trình học tập bị “đóng băng”;
  • tính dễ bị tổn thương của thuật toán khi rơi vào cực tiểu cục bộ của hàm lỗi.

Thuật toán được mô tả lần đầu tiên vào năm 1974.

Phần đầu tiên bao gồm: cấu trúc, cấu trúc liên kết, chức năng kích hoạt và tập huấn luyện. Trong phần này, tôi sẽ cố gắng giải thích cách huấn luyện mạng nơ ron tích chập.

Đào tạo mạng thần kinh tích chập

Ở giai đoạn đầu, mạng lưới thần kinh chưa được huấn luyện (untuned). Theo nghĩa chung, đào tạo được hiểu là trình bày tuần tự một hình ảnh tới đầu vào của mạng thần kinh, từ tập huấn luyện, sau đó câu trả lời thu được được so sánh với đầu ra mong muốn, trong trường hợp của chúng tôi là 1 - hình ảnh đại diện cho một khuôn mặt, trừ 1 - hình ảnh đại diện cho nền (không phải khuôn mặt), sự khác biệt kết quả giữa phản hồi mong đợi và nhận được là kết quả của hàm lỗi (lỗi delta). Sau đó, delta lỗi này phải được lan truyền đến tất cả các nơ-ron được kết nối của mạng.

Do đó, việc đào tạo mạng nơ-ron được giảm xuống để giảm thiểu chức năng lỗi bằng cách điều chỉnh hệ số trọng số của các kết nối khớp thần kinh giữa các nơ-ron. Hàm lỗi là sự khác biệt giữa câu trả lời nhận được và câu trả lời mong muốn. Ví dụ: đầu vào là hình ảnh khuôn mặt, giả sử rằng đầu ra của mạng thần kinh là 0,73 và kết quả mong muốn là 1 (vì hình ảnh khuôn mặt), chúng ta nhận được rằng lỗi mạng là sự khác biệt, tức là 0,27. Sau đó, trọng số của lớp nơ-ron đầu ra được điều chỉnh theo lỗi. Đối với các nơ-ron lớp đầu ra, các giá trị đầu ra thực tế và mong muốn của chúng đã được biết. Do đó, việc đặt trọng số kết nối cho các nơ-ron như vậy là tương đối đơn giản. Tuy nhiên, đối với các nơ-ron của các lớp trước, sự điều chỉnh không quá rõ ràng. Trong một thời gian dài, không có thuật toán nào được biết đến để truyền lỗi qua các lớp ẩn.

thuật toán lan truyền ngược

Để đào tạo mạng thần kinh được mô tả, thuật toán lan truyền ngược đã được sử dụng. Phương pháp huấn luyện mạng nơ-ron nhiều lớp này được gọi là quy tắc delta tổng quát. Phương pháp này được đề xuất vào năm 1986 bởi Rumelhart, McClelland và Williams. Điều này đánh dấu sự quan tâm trở lại đối với mạng lưới thần kinh, vốn bắt đầu mờ dần vào đầu những năm 70. Thuật toán này là thuật toán đầu tiên và chính được áp dụng thực tế để huấn luyện mạng nơ-ron nhiều lớp.

Đối với lớp đầu ra, việc điều chỉnh các trọng số là trực quan, nhưng đối với các lớp ẩn, thuật toán đã không được biết đến trong một thời gian dài. Trọng số của một nơ-ron ẩn sẽ thay đổi tỷ lệ thuận với sai số của các nơ-ron mà nơ-ron này được liên kết. Đó là lý do tại sao lan truyền ngược các lỗi này qua mạng cho phép bạn điều chỉnh chính xác trọng số của các liên kết giữa tất cả các lớp. Trong trường hợp này, giá trị của hàm lỗi giảm và mạng được huấn luyện.

Các mối tương quan chính của phương pháp lan truyền ngược lỗi thu được với ký hiệu sau:

Giá trị lỗi được xác định theo công thức 2.8 lỗi bình phương trung bình gốc:

Trạng thái bất hoạt của mỗi nơ ron j đối với ảnh p được viết dưới dạng tổng trọng số theo công thức 2.9:

Đầu ra của mỗi nơ ron j là giá trị của hàm kích hoạt

Điều này đặt tế bào thần kinh ở trạng thái kích hoạt. Bất kỳ hàm đơn điệu khả vi liên tục nào cũng có thể được sử dụng làm hàm kích hoạt. Trạng thái kích hoạt của nơron được tính theo công thức 2.10:

Là một phương pháp để giảm thiểu sai số, phương pháp giảm dần độ dốc được sử dụng, bản chất của phương pháp này là tìm giá trị cực tiểu (hoặc cực đại) của hàm bằng cách di chuyển dọc theo vectơ độ dốc. Để tìm kiếm mức tối thiểu, chuyển động phải được thực hiện theo hướng ngược chiều. Phương pháp giảm độ dốc theo hình 2.7.

Độ dốc của hàm mất mát là một vectơ đạo hàm riêng, được tính theo công thức 2.11:

Đạo hàm của hàm sai số đối với một ảnh cụ thể có thể được viết theo quy tắc chuỗi, công thức 2.12:

Sai số của một nơ-ron thường được viết dưới dạng ký hiệu δ (delta). Đối với lớp đầu ra, lỗi được xác định rõ ràng, nếu chúng ta lấy đạo hàm của công thức 2.8, chúng ta sẽ nhận được t dấu trừ y, nghĩa là sự khác biệt giữa đầu ra mong muốn và đầu ra thu được. Nhưng làm thế nào để tính lỗi cho các lớp ẩn? Để giải quyết vấn đề này, người ta chỉ phát minh ra thuật toán lan truyền ngược. Bản chất của nó nằm ở việc tính toán tuần tự các lỗi của các lớp ẩn bằng cách sử dụng các giá trị lỗi của lớp đầu ra, tức là các giá trị lỗi lan truyền qua mạng theo hướng ngược lại từ đầu ra đến đầu vào.

Sai số δ của lớp ẩn được tính theo công thức 2.13:

Thuật toán lan truyền lỗi được rút gọn thành các bước sau:

  • phân phối trực tiếp tín hiệu qua mạng, tính toán trạng thái của nơ-ron;
  • tính toán giá trị lỗi δ cho lớp đầu ra;
  • lan truyền ngược: tuần tự từ cuối đến đầu cho tất cả các lớp ẩn, ta tính δ theo công thức 2.13;
  • cập nhật trọng số mạng thành lỗi đã tính toán trước đó δ.
Thuật toán lan truyền ngược lỗi trong perceptron đa lớp được hiển thị bên dưới:


Cho đến thời điểm này, các trường hợp lan truyền lỗi dọc theo các lớp của perceptron, nghĩa là dọc theo đầu ra và ẩn, đã được xem xét, nhưng ngoài chúng, còn có các mẫu con và tích chập trong mạng nơ ron tích chập.

Tính toán lỗi trên lớp mẫu con

Việc tính toán lỗi trên lớp mẫu phụ được trình bày theo nhiều cách. Trường hợp thứ nhất, khi lớp mẫu phụ nằm trước lớp liên kết đầy đủ, thì nó có các nơron và các kết nối cùng loại với lớp liên kết đầy đủ, tương ứng, việc tính toán sai số δ không khác gì tính toán δ của lớp ẩn. Trường hợp thứ hai, khi lớp lấy mẫu con ở phía trước lớp tích chập, phép tính δ xảy ra bằng tích chập nghịch đảo. Để hiểu tích chập ngược, trước tiên bạn phải hiểu tích chập thông thường và thực tế là cửa sổ trượt trên bản đồ đặc trưng (trong quá trình truyền tín hiệu về phía trước) có thể được hiểu là một lớp ẩn thông thường với các kết nối giữa các nơ-ron, nhưng điểm khác biệt chính là các kết nối này là có thể tách rời, nghĩa là một số cặp nơ-ron có thể có một kết nối với một giá trị trọng lượng cụ thể chứ không chỉ một. Giải thích hoạt động tích chập ở dạng nhiều lớp thông thường theo Hình 2.8.


Hình 2.8 - Giải thích hoạt động tích chập trong chế độ xem nhiều lớp, trong đó các liên kết có cùng màu có cùng trọng số. Bản đồ mẫu con được đánh dấu bằng màu xanh lam, hạt nhân khớp thần kinh có nhiều màu và kết quả tích chập có màu cam

Giờ đây, thao tác tích chập được trình bày ở dạng lớp quen thuộc, người ta có thể hiểu một cách trực giác rằng việc tính toán delta xảy ra giống như trong lớp ẩn của một mạng được kết nối đầy đủ. Theo đó, sau khi đã tính được delta của lớp tích chập trước đó, có thể tính được delta của mẫu con, theo Hình 2.9.


Hình 2.9 - Tính toán lớp lấy mẫu con δ do lớp chập δ và nhân

tích chập ngược là cách tương tự để tính toán delta, chỉ khác một chút về cách phức tạp, bao gồm xoay hạt nhân 180 độ và trượt quá trình quét bản đồ tích chập của delta với các hiệu ứng cạnh đã sửa đổi. Nói một cách đơn giản, chúng ta cần lấy lõi của bản đồ tích chập (theo lớp mẫu con), xoay nó 180 độ và thực hiện một phép tích chập bình thường bằng cách sử dụng các delta đã tính toán trước đó của bản đồ tích chập, nhưng sao cho cửa sổ quét mở rộng ra ngoài bản đồ . Kết quả của phép giải chập theo hình 2.10, chu trình vượt qua giải chập theo hình 2.11.


Hình 2.10 - Kết quả của phép toán tích chập nghịch đảo


Hình 2.11 - Lõi xoay 180 độ quét bản đồ tích chập

Tính toán lỗi trên lớp tích chập

Thông thường, lớp dẫn đầu sau lớp tích chập là lấy mẫu con, vì vậy nhiệm vụ của chúng ta là tính toán delta của lớp hiện tại (tích chập) do kiến ​​thức về delta của lớp lấy mẫu con. Trên thực tế, lỗi delta không được tính toán mà được sao chép. Trong quá trình truyền tín hiệu về phía trước, các nơ-ron của lớp mẫu phụ được hình thành do cửa sổ quét không chồng lấp trên lớp tích chập, trong đó các nơ-ron có giá trị tối đa được chọn, trong quá trình truyền ngược lại, chúng tôi trả về delta lỗi cho tế bào thần kinh tối đa đã chọn trước đó, trong khi phần còn lại nhận được delta lỗi bằng không.

Sự kết luận

Biểu diễn hoạt động tích chập ở dạng đa lớp thông thường (Hình 2.8), người ta có thể hiểu một cách trực quan rằng việc tính toán delta xảy ra giống như trong lớp ẩn của mạng được kết nối đầy đủ.