Cross entropy là gì

  -  

Các bài toán classification thực tế thường xuyên có rất nhiều classes (multi-class), những binary classifiers mặc dù rất có thể vận dụng cho các bài bác toán thù multi-class, chúng vẫn có các giảm bớt nhất mực. Với binary classifiers, chuyên môn được thực hiện nhiều độc nhất one-vs-rest có một tiêu giảm về tổng các xác suất. Trong post này, một cách thức mở rộng của Logistic Regression sẽ được ra mắt góp hạn chế hạn chế bên trên. Một đợt tiếp nhữa, dù cho là Softmax Regression, cách thức này được thực hiện thoáng rộng nhỏng một cách thức classification.

Bạn đang xem: Cross entropy là gì

Trong trang này:

2. Softmax function 3. Hàm mất đuối với phương pháp buổi tối ưu 4. Một vài chú ý khi lập trình cùng với Pynhỏ nhắn 5. Ví dụ cùng với Python thả 6. Thảo luận

Một lưu ý nhỏ: Hàm mất đuối của Softmax Regression trông có vẻ như hơi phức hợp, tuy nhiên ví như kiên cường hiểu đến phần phương thức tối ưu, các các bạn sẽ thấy vẻ rất đẹp khuất sau sự phức hợp đó. Gradient của hàm mất mát và phương pháp update ma trận trọng số là rất đơn giản dễ dàng. (Đơn giản sau vài bước biến đổi tân oán học tập trông bao gồm vẻ phức tạp).

Nếu gồm điểm làm sao nặng nề phát âm, độc giả được khuyến nghị gọi lại các bài trước, trong số đó quan trọng duy nhất là Bài 10: Logistic Regression.

1. Giới thiệu

Tôi xin phxay được bước đầu trường đoản cú mô hình one-vs-rest được trình diễn vào bài bác trước. Output đầu ra layer (red color nhạt) có thể phân bóc thành hai sublayer nlỗi hình bên dưới đây:


*

Hình 1: Multi-class classification cùng với Logistic Regression với one-vs-rest.

Dữ liệu (mathbfx) có số chiều là ((d +1)) vày có thành phần 1 được chế tạo phía trước, thể hiện hệ số tự do thoải mái vào hàm tuyến tính. Hệ số tự do thoải mái (w_0j) có cách gọi khác là bias.

Giả sử số classes là (C). Với one-vs-rest, chúng ta đề xuất xây cất (C) Logistic Regression khác nhau. Các đầu ra output dự đoán được xem theo hàm sigmoid:Trong nghệ thuật này, các phần tử (a_i, i = 1, 2, dots, C) được suy ra trực tiếp chưa đến (z_i). Vì vậy, không có quan hệ chặt chẽ nào thân các (a_i), tức tổng của bọn chúng có thể nhỏ tuổi hơn hoặc lớn hơn 1. Nếu ta rất có thể khai thác được từng dục tình giữa các (z_i) thì tác dụng của bài bác toán thù classification có thể tốt rộng.

Chú ý rằng những mô hình Linear Regression, PLA, Logistic Regression chỉ có 1 node nghỉ ngơi output layer. Trong những trường thích hợp đó, tđê mê số mô hình chỉ là 1 trong những vector (mathbfw). Trong ngôi trường đúng theo output layer có rất nhiều rộng 1 node, tđam mê số quy mô sẽ là tập đúng theo tsi mê số (mathbfw_i) ứng với từng node. Trong thời điểm này, ta gồm ma trận trọng số (mathbfW = ).

2. Softmax function

2.1. Công thức của Softmax function

Chúng ta nên một mô hình Xác Suất làm thế nào cho cùng với mỗi input (mathbfx), (a_i) biểu hiện phần trăm để input đầu vào đó lâm vào hoàn cảnh class (i). Vậy điều kiện cần là những (a_i) buộc phải dương cùng tổng của chúng bằng 1. Để có thể thỏa mãn điều kiện này, họ bắt buộc quan sát vào phần đa cực hiếm (z_i) cùng dựa vào tình dục giữa những (z_i) này để tính tân oán giá trị của (a_i). Ngoài những ĐK (a_i) to hơn 0 và bao gồm tổng bởi 1, họ vẫn thêm 1 điều kiện cũng rất tự nhiên nữa, đó là: cực hiếm (z_i = mathbfw_i^Tmathbfx) càng Khủng thì Phần Trăm dữ liệu rơi vào class (i) càng cao. Điều khiếu nại cuối này chỉ ra rằng bọn họ đề xuất một hàm đồng đổi thay tại chỗ này.

Chú ý rằng (z_i ) có thể nhận quý hiếm cả âm cùng dương. Một hàm số mượt đơn giản dễ dàng có thể chắc chắn rằng đổi thay (z_i ) thành một giá trị dương, cùng hơn thế nữa, đồng phát triển thành, là hàm (exp(z_i) = e^z_i). Điều khiếu nại mượt nhằm thuận tiện hơn vào câu hỏi tính đạo hàm sau đây. Điều kiện cuối cùng, tổng những (a_i) bằng 1 rất có thể được đảm bảo nếu:

Hàm số này, tính tất cả các (a_i) nhờ vào toàn bộ các (z_i), thõa mãn tất cả những ĐK sẽ xét: dương, tổng bằng 1, giữ lại được thứ tự của (z_i). Hàm số này được Điện thoại tư vấn là softmax function. Chú ý rằng cùng với bí quyết quan niệm này, không tồn tại xác suất (a_i) nào hoàn hảo nhất bằng 0 hoặc tuyệt vời và hoàn hảo nhất bằng 1, tuy vậy chúng có thể khôn xiết ngay sát 0 hoặc 1 lúc (z_i) hết sức bé dại hoặc không nhỏ lúc đối chiếu với các (z_j, j eq i).

Hiện nay, ta hoàn toàn có thể mang sử rằng:

Trong số đó, (P(y = i | mathbfx; mathbfW)) được đọc là Tỷ Lệ nhằm một điểm tài liệu (mathbfx) lâm vào class sản phẩm (i) nếu như biết tmê mệt số quy mô (ma trận trọng số) là (mathbfW).

Hình vẽ dưới đây trình bày mạng Softmax Regression dưới dạng neural network:


*

Ở Phần Viền bắt buộc, hàm đường tính (Sigma) và hàm softmax (activation function) được bóc riêng ra nhằm phục vụ mang lại mục đích minc họa. Dạng short form sống mặt nên là dạng hay sử dụng trong các Neural Networks, lớp (mathbfa) được ngầm phát âm là bao hàm cả lớp (mathbfz).

2.2. Softmax function vào Python

Dưới đấy là một đoạn code viết hàm softmax. Đầu vào là 1 ma trận với từng cột là một vector (mathbfz), đầu ra output cũng là một trong ma trận cơ mà từng cột có mức giá trị là (mathbfa = extsoftmax(mathbfz)). Các quý giá của (mathbfz) nói một cách khác là scores.


import numpy as np def softmax(Z): """ Compute softmax values for each sets of scores in V. each column of V is a mix of score. """ e_Z = np.exp(Z) A = e_Z / e_Z.sum(axis = 0) return A

2.3. Một vài ba ví dụ

Hình 3 dưới đó là một vài ví dụ về mối quan hệ giữa nguồn vào cùng đầu ra output của hàm softmax. Hàng bên trên màu xanh lá cây nphân tử biểu hiện những scores (z_i) với đưa sử rằng số classes là 3. Hàng dưới màu đỏ nphân tử biểu đạt các cực hiếm đầu ra (a_i) của hàm softmax.


*

Có một vài quan sát nlỗi sau:

Cột 1: Nếu những (z_i) đều bằng nhau, thì các (a_i) cũng đều nhau và bằng 1/3.

Cột 2: Nếu quý giá lớn nhất trong những (z_i) là (z_1) vẫn bằng 2, nhưng các quý giá không giống biến hóa, thì tuy nhiên xác suất tương xứng (a_1) vẫn là lớn nhất, tuy vậy nó đã chuyển đổi lên hơn 0.5. Đây chính là một lý do mà tên của hàm này còn có từ soft. (max vày phẩn tự lớn nhất vẫn chính là thành phần to nhất).

Cột 3: Khi những giá trị (z_i) là âm thì những giá trị (a_i) vẫn luôn là dương với sản phẩm trường đoản cú vẫn được bảo đảm.

Cột 4: Nếu (z_1 = z_2), thì (a_1 = a_2).

Quý khách hàng đọc có thể thử với những giá trị không giống thẳng trên trình phê duyệt trong link này, kéo xuống phần Softmax.

2.4. Phiên bạn dạng định hình rộng của softmax function

khi một trong những (z_i) quá to, Việc tính toán thù (exp(z_i)) rất có thể tạo ra hiện tượng kỳ lạ tràn số (overflow), ảnh hưởng phệ tới tác dụng của hàm softmax. Có một giải pháp khắc phục và hạn chế hiện tượng kỳ lạ này bằng cách dựa vào quan liêu gần kề sau:

<egineqnarrayfracexp(z_i)sum_j=1^C exp(z_j) &=& fracexp(-c)exp(z_i)exp(-c)sum_j=1^C exp(z_j)&=& fracexp(z_i-c)sum_j=1^C exp(z_j-c)endeqnarray>cùng với (c) là 1 hằng số ngẫu nhiên.

Xem thêm: Âm Dương Sư: Tổng Hợp Đáp Án Mật Thư Âm Dương Sư, Mật Thư Âm Dương Sư Tổng Hợp Đáp Án Mới Nhất

Vậy một phương thức đơn giản dễ dàng góp khắc phục và hạn chế hiện tượng overflow là trừ toàn bộ các (z_i) đi một cực hiếm đầy đủ to. Trong thực nghiệm, quý giá đủ bự này thường xuyên được lựa chọn là (c = max_i z_i). Vậy bạn có thể sửa đoạn code đến hàm softmax phía trên bằng cách trừ mỗi cột của ma trận đầu vào Z đi quý giá lớn nhất trong cột đó. Ta tất cả phiên bản ổn định hơn là softmax_stable:


def softmax_stable(Z): """ Compute softmax values for each sets of scores in Z. each column of Z is a set of score. """ e_Z = np.exp(Z - np.max(Z, axis = 0, keepdims = True)) A = e_Z / e_Z.sum(axis = 0) return A
trong những số đó axis = 0 tức là mang max theo cột (axis = 1 đang mang max theo hàng), keepdims = True nhằm bảo đảm an toàn phnghiền trừ thân ma trận Z cùng vector triển khai được.

3. Hàm mất đuối cùng phương thức buổi tối ưu

3.1. One hot coding

Với bí quyết biểu diễn network như bên trên, mỗi output sẽ không còn là 1 trong những quý hiếm tương xứng với mỗi class nữa nhưng mà đã là 1 vector tất cả đúng 1 phần tử bởi 1, những phần tử còn sót lại bởi 0. Phần tử bởi 1 năm ở đoạn tương ứng với class kia, miêu tả rằng điểm tài liệu vẫn xét rơi vào tình thế class này với Phần Trăm bởi 1 (sự thật là như vậy, ko buộc phải dự đoán). Cách mã hóa output này chính là one-hot coding nhưng mà tôi đang nói trong bài xích K-means clustering cùng bài bác trước.

khi thực hiện quy mô Softmax Regression, cùng với từng đầu vào (mathbfx), ta sẽ sở hữu được đầu ra output dự đoán là (mathbfa = extsoftmax(mathbfW^Tmathbfx)). Trong lúc đó, cổng đầu ra thực sự bọn họ gồm là vector (mathbfy) được trình diễn dưới dạng one-hot coding.

Hàm mất mát sẽ được tạo nhằm buổi tối tđọc sự khác biệt giữa cổng output dự đoán (mathbfa) cùng đầu ra output thực sự (mathbfy). Một gạn lọc đầu tiên ta hoàn toàn có thể nghĩ về tới là:

Tuy nhiên đây chưa phải là một trong những tuyển lựa tốt. khi reviews sự khác biệt (tuyệt khoảng chừng cách) thân nhì phân bổ Tỷ Lệ (probability distributions), bọn họ có một đại lượng tổng hợp khác tác dụng rộng. Đại lượng kia có tên là cross entropy.

3.2. Cross Entropy

Cross entropy giữa hai phân phối hận (mathbfp) cùng (mathbfq) được khái niệm là:>

Với (mathbfp) cùng (mathbfq) là tách rộc (như (mathbfy) với (mathbfa) trong bài xích toán thù của bọn chúng ta), công thức này được viết dưới dạng:

Để làm rõ rộng điểm mạnh của hàm cross entropy cùng hàm bình pmùi hương khoảng cách thường thì, họ thuộc xem Hình 4 tiếp sau đây. Đây là ví dụ vào trường phù hợp (C = 2) với (p_1) thứu tự nhận các quý hiếm (0.5, 0.1) và (0.8).


*
*
*

Hình 4: So sánh giữa hàm cross entropy với hàm bình phương thơm khoảng cách. Các điểm màu xanh da trời lục biểu hiện những quý hiếm nhỏ dại tuyệt nhất của từng hàm.

Có nhì dìm xét quan trọng đặc biệt sau đây:

Giá trị nhỏ duy nhất của tất cả nhị hàm số có được Lúc (q = p) trên hoành độ của những điểm blue color lục.

Quan trọng hơn, hàm cross entropy dấn cực hiếm không hề nhỏ (tức loss khôn cùng cao) khi (q) ở xa (p). Trong khi đó, sự chênh lệch giữa các loss nghỉ ngơi sát hay xa nghiệm của hàm bình pmùi hương khoảng cách ((q - p)^2) là không đáng kể. Về khía cạnh tối ưu, hàm cross entropy đã đến nghiệm gần với (p) rộng vì chưng phần đa nghiệm ngơi nghỉ xa bị trừng phạt khôn cùng nặng trĩu.

Hai tính chất trên trên đây khiến cho cross entropy được thực hiện rộng rãi lúc tính khoảng cách giữa nhị phân phối hận Phần Trăm.

Chụ ý: Hàm cross entropy không có tính đối xứng (H(mathbfp, mathbfq) eq H(mathbfq, mathbfp)). Như vậy hoàn toàn có thể dễ ợt nhận biết ngơi nghỉ việc các nguyên tố của (mathbfp) vào phương pháp ((1)) rất có thể dấn quý giá bằng 0, trong khi đó những yếu tố của (mathbfq) cần là dương vày (log(0)) ko khẳng định. Chính vì vậy, khi thực hiện cross entropy trong số bài tân oán supervised learning, (mathbfp) hay là đầu ra thực sự vị cổng đầu ra đích thực chỉ có 1 yếu tắc bằng 1, sót lại bằng 0 (one-hot), (mathbfq) hay là cổng output dự đoán, Lúc mà lại không có Phần Trăm làm sao hoàn hảo nhất bằng 1 hoặc tuyệt vời và hoàn hảo nhất bằng 0 cả.

Trong Logistic Regression, họ cũng đều có hai phân păn năn dễ dàng và đơn giản. (i) Đầu ra thực sự của điểm dữ liệu nguồn vào (mathbfx_i) bao gồm phân phối Tỷ Lệ là () cùng với (y_i) là Xác Suất để điểm tài liệu đầu vào lâm vào tình thế class trước tiên (bởi 1 trường hợp (y_i = 1), bởi 0 ví như (y_i = 0)). (ii). Đầu ra dự đoán của điểm dữ liệu chính là (a_i = extsigmoid(mathbfw^Tmathbfx)) là Tỷ Lệ để đặc điểm đó lâm vào tình thế class đầu tiên. Xác suất để đặc điểm này rơi vào cảnh class sản phẩm nhị hoàn toàn có thể được tiện lợi suy ra lf (1 - a_i). Vì vậy, hàm mất non vào Logistic Regression:chính là một trường đúng theo đặc biệt quan trọng của Cross Entropy. ((N) được dùng để làm mô tả số điểm dữ liệu vào tập training).

Với Softmax Regression, vào ngôi trường thích hợp gồm (C) classes, loss thân cổng output dự đân oán và đầu ra output thực sự của một điểm tài liệu (mathbfx_i) được xem bằng:Với (y_ji) và ( a_ji) theo thứ tự là là phần tử trang bị (j) của vector (xác suất) (mathbfy_i) với (mathbfa_i). Nhắc lại rằng đầu ra output (mathbfa_i) dựa vào vào nguồn vào (mathbfx_i) và ma trận trọng số (mathbfW).

3.3. Hàm mất non mang lại Softmax Regression

Kết thích hợp tất cả những cặp dữ liệu (mathbfx_i, mathbfy_i, i = 1, 2, dots, N), bọn họ sẽ có hàm mất mát cho Softmax Regression nlỗi sau:

<egineqnarrayJ(mathbfW; mathbfX, mathbfY) = -sum_i = 1^N sum_j = 1^C y_jilog(a_ji) = -sum_i = 1^N sum_j = 1^C y_jilogleft(fracexp(mathbfw_j^Tmathbfx_i)sum_k=1^C exp(mathbfw_k^Tmathbfx_i) ight)endeqnarray>

Với ma trận trọng số (mathbfW) là biến đổi đề xuất buổi tối ưu. Hàm mất đuối này trông dường như xứng đáng sợ, mà lại chớ sợ, hiểu tiếp những các bạn sẽ thấy đạo hàm của nó cực kỳ rất đẹp (với xứng đáng yêu).

3.4. Tối ưu hàm mất mát

Một đợt tiếp nhữa, họ lại thực hiện Stochastic Gradient Descent (SGD) tại chỗ này.

Với có một cặp dữ liệu ((mathbfx_i, mathbfy_i)), ta có: <egineqnarray&=và -sum_j = 1^C y_jilogleft(fracexp(mathbfw_j^Tmathbfx_i)sum_k=1^C exp(mathbfw_k^Tmathbfx_i) ight) &=& -sum_j=1^Cleft(y_ji mathbfw_j^Tmathbfx_i - y_jilogleft(sum_k=1^C exp(mathbfw_k^Tmathbfx_i) ight) ight) &=& -sum_j=1^C y_ji mathbfw_j^Tmathbfx_i + logleft(sum_k=1^C exp(mathbfw_k^Tmathbfx_i) ight) ~~ (3)endeqnarray>

vào chuyển đổi sinh hoạt mẫu sau cùng, tôi đang thực hiện quan tiền sát: (sum_j=1^C y_ji = 1) vì chưng nó là tổng các phần trăm.

Tiếp theo ta thực hiện công thức: ~~(4)>

Trong số đó, gradient theo từng cột hoàn toàn có thể tính được dựa theo ((3)):

<egineqnarrayfracpartial J_i(mathbfW)partial mathbfw_j &=và -y_jimathbfx_i + fracexp(mathbfw_j^Tmathbfx_i)sum_k = 1^C exp(mathbfw_k^Tmathbfx_i)mathbfx_i &=& -y_jimathbfx_i + a_ji mathbfx_i = mathbfx_i (a_ji - y_ji) &=và e_jimathbfx_i ~( extwhere~ e_ji = a_ji - y_ji) ~~(5)endeqnarray>

Giá trị (e_ji = a_ji - y_ji ) có thể được xem là không nên số dự đoán.

Đến trên đây ta đã làm được biểu thức cực kỳ đẹp mắt rồi. Kết thích hợp ((4)) và ((5)) ta có: = mathbfx_imathbfe_i^T>

Từ đây ta cũng rất có thể suy ra rằng:với (mathbfE = mathbfA - Y). Công thức tính gradient đơn giản dễ dàng nuốm này giúp cho tất cả Batch Gradient Descent, Stochastic Gradient Descent (SGD), với Mini-batch Gradient Descent gần như hoàn toàn có thể dễ ợt được vận dụng.

Giả sử rằng chúng ta áp dụng SGD, công thức update cho ma trận trọng số (mathbfW) vẫn là:

quý khách gồm thấy cách làm này tương tự với công thức update của Logistic Regression không!

Thực ra:

3.5. Logistic Regression là 1 trường đúng theo đặt biệt của Softmax Regression

khi (C = 2), Softmax Regression cùng Logistic Regression là giống nhau. Thật vậy, cổng đầu ra dự đân oán của Softmax Regression với (C= 2) rất có thể được viết dưới dạng: <egineqnarraya_1 &=& fracexp(mathbfw_1^Tmathbfx) exp(mathbfw_1^Tmathbfx) + exp(mathbfw_2^Tmathbfx) &=và frac11 + exp((mathbfw_2 - mathbfw_1)^Tmathbfx)endeqnarray>

Đây đó là sigmoid function, là đầu ra dự đân oán theo Logistic Regression. Khi (C = 2), bạn đọc cũng có thể thấy rằng hàm mất đuối của Logistic cùng Softmax Regression phần đông là cross entropy. hơn nữa, tuy nhiên có 2 outputs, Softmax Regression rất có thể rút gọn thành 1 output bởi tổng 2 outputs luôn luôn luôn bằng 1.

Xem thêm: Hướng Dẫn Nhận Quà Boom Miễn Phí, Boom Online, Dinh Family Library

4. Một vài chú ý khi xây dựng cùng với Python

4.1. Bắt đầu với tài liệu nhỏ

Các bài xích tân oán Machine Learning thông thường sẽ có độ phức hợp cao cùng với lượng tài liệu béo với các chiều. Để rất có thể vận dụng một thuật toán thù vào một trong những bài toán rõ ràng, trước tiên họ bắt buộc vận dụng thuật toán kia vào simulated data (tài liệu giả) cùng với số chiều cùng số điểm dữ liệu nhỏ tuổi rộng. Simulated data này thường xuyên được tạo ra tự dưng (có thể thêm vài ba ràng buộc tùy thuộc vào đặc thù của dữ liệu). Với simulated data nhỏ dại, chúng ta cũng có thể debug nkhô nóng rộng và test với nhiều trường vừa lòng simulated data không giống nhau. Lúc như thế nào thấy thuật tân oán chạy đúng bọn họ bắt đầu chuyển dữ liệu thật vào.