Ý nghĩa của các bản ghi từ trong TensorFlow là gì?


250

Trong hàm TensorFlow sau đây, chúng ta phải cung cấp kích hoạt các nơ-ron nhân tạo ở lớp cuối cùng. Điều đó tôi hiểu. Nhưng tôi không hiểu tại sao nó được gọi là nhật ký? Đó không phải là một hàm toán học sao?

loss_function = tf.nn.softmax_cross_entropy_with_logits(
     logits = last_layer,
     labels = target_output
)

Câu trả lời:


215

Nhật ký là một thuật ngữ quá tải có thể có nghĩa là nhiều thứ khác nhau:


Trong Math , Logit là một hàm ánh xạ xác suất ( [0, 1]) đến R ( (-inf, inf))

nhập mô tả hình ảnh ở đây

Xác suất 0,5 tương ứng với logit bằng 0. logit âm tương ứng với xác suất nhỏ hơn 0,5, dương đến> 0,5.

Trong ML , nó có thể là

vectơ của các dự đoán thô (không chuẩn hóa) mà một mô hình phân loại tạo ra, thông thường sau đó được chuyển đến một hàm chuẩn hóa. Nếu mô hình đang giải quyết vấn đề phân loại nhiều lớp, các bản ghi thường trở thành đầu vào cho hàm softmax. Hàm softmax sau đó tạo ra một vectơ xác suất (chuẩn hóa) với một giá trị cho mỗi lớp có thể.

Các bản ghi đôi khi cũng đề cập đến nghịch đảo phần tử của hàm sigmoid.


127
Đối với Tensorflow: Đó là một cái tên được cho là ngụ ý rằng Tenor này là đại lượng được Softmax ánh xạ tới xác suất.
thertweck

1
cái này có giống như thứ được cấp số nhân trước softmax không? tức là softmax(logit) = exp(logit)/Z(logit)sau đó logit = h_NN(x)? vậy logit có giống như "điểm số" không?
Charlie Parker

4
Hiểu biết cá nhân, trong miền TensorFlow, nhật ký là các giá trị được sử dụng làm đầu vào cho softmax. Tôi đã hiểu được điều này dựa trên hướng dẫn kéo căng này.
Diansheng

2
Tôi không chắc chắn nếu điều này trả lời câu hỏi. Có lẽ đó là lý do tại sao nó không bao giờ được chấp nhận. Tôi hiểu hàm logit là gì, nhưng nó cũng đánh đố lý do tại sao Tensorflow gọi các logits này. Nó cũng là ký hiệu tương tự cho một số tham số trong các chức năng của
Tensorflow

1
Greate! Bạn có thể làm một ví dụ đơn giản? Thê nay đung không? [1, 0.5, 0.5]thông qua bình thường hóa trở thành [0.5, 0.25, 0.25]và sau đó mềm trở thành [0,]nếu một nóng [1, 0, 0]? hoặc chỉ đưa [1, 0, 0]ra gây ra đầu ra nên là một vector?
Tina Liu

91

Chỉ cần thêm phần làm rõ này để bất kỳ ai cuộn xuống nhiều như vậy ít nhất cũng có thể hiểu đúng, vì có rất nhiều câu trả lời sai được nêu lên.

Diansheng của câu trả lời và JakeJ của câu trả lời nhận được nó ngay.
Một câu trả lời mới được đăng bởi Shital Shah là một câu trả lời thậm chí tốt hơn và đầy đủ hơn.


Vâng, logit là một hàm toán học trong thống kê, nhưng logitđược sử dụng trong bối cảnh của các mạng thần kinh là khác nhau. Thống kê logitthậm chí không có ý nghĩa gì ở đây.


Tôi không thể tìm thấy một định nghĩa chính thức ở bất cứ đâu, nhưng logitvề cơ bản có nghĩa là:

Các dự đoán thô xuất phát từ lớp cuối cùng của mạng lưới thần kinh.
1. Đây là tenxơ mà bạn áp dụng argmaxhàm để có được lớp dự đoán.
2. Đây là tenxơ mà bạn cung cấp cho softmaxhàm để có xác suất cho các lớp dự đoán.


Ngoài ra, từ một hướng dẫn trên trang web tenorflow chính thức:

Lớp đăng nhập

Lớp cuối cùng trong mạng thần kinh của chúng ta là lớp logits, sẽ trả về các giá trị thô cho dự đoán của chúng ta. Chúng tôi tạo ra một lớp dày đặc với 10 nơ-ron (một cho mỗi lớp mục tiêu 0 Hay9), với kích hoạt tuyến tính (mặc định):

logits = tf.layers.dense(inputs=dropout, units=10)

Nếu bạn vẫn còn bối rối, tình hình là như thế này:

raw_predictions = neural_net(input_layer)
predicted_class_index_by_raw = argmax(raw_predictions)
probabilities = softmax(raw_predictions)
predicted_class_index_by_prob = argmax(probabilities)

ở đâu, predicted_class_index_by_rawpredicted_class_index_by_probsẽ bằng nhau.

Một tên khác raw_predictionstrong mã trên làlogit .


Về lý do tại sao logit ... tôi không có ý tưởng. Lấy làm tiếc.
[Chỉnh sửa: Xem câu trả lời này cho các động lực lịch sử đằng sau thuật ngữ.]


Câu đố

Mặc dù, nếu bạn muốn, bạn có thể áp dụng thống kê logitđể probabilitiesđi ra khỏi softmaxchức năng.

Nếu xác suất của một lớp nhất định là p,
thì tỷ lệ cược log của lớp đó là L = logit(p).

Ngoài ra, xác suất của lớp đó có thể được phục hồi p = sigmoid(L)bằng cách sử dụng sigmoidhàm.

Không phải là rất hữu ích để tính toán tỷ lệ cược log mặc dù.


80

Logit là một chức năng mà các bản đồ xác suất [0, 1]để[-inf, +inf] .

Softmax là một chức năng ánh xạ [-inf, +inf]tới[0, 1] tương tự như sigmoid. Nhưng Softmax cũng bình thường hóa tổng của các giá trị (vectơ đầu ra) là 1.

Dòng chảy "với logit" : Có nghĩa là bạn đang áp dụng hàm softmax để đăng nhập số để bình thường hóa nó. Đầu vào / logit không được chuẩn hóa và có thể mở rộng từ [-inf, inf].

Chuẩn hóa này được sử dụng cho các vấn đề phân loại đa lớp. Và đối với các vấn đề phân loại đa nhãn, chuẩn hóa sigmoid được sử dụng tức làtf.nn.sigmoid_cross_entropy_with_logits


10
vì vậy logit giống như "điểm số"
Charlie Parker

1
Tôi đề nghị thêm một dòng trong câu trả lời của bạn một cách rõ ràng Logitchức năng (số liệu thống kê) và logitslớp (tenorflow)
AneesAhmed777

62

Tóm lược

Trong bối cảnh học sâu lớp đăng nhập có nghĩa là lớp cung cấp cho softmax (hoặc các chuẩn hóa khác như vậy). Đầu ra của softmax là xác suất cho nhiệm vụ phân loại và đầu vào của nó là lớp logits. Lớp logits thường tạo ra các giá trị từ -infinite thành + infinite và lớp softmax biến đổi nó thành các giá trị từ 0 thành 1.

Bối cảnh lịch sử

Thuật ngữ này đến từ đâu? Trong những năm 1930 và 40, một số người đã cố gắng thích ứng với hồi quy tuyến tính cho vấn đề dự đoán xác suất. Tuy nhiên, hồi quy tuyến tính tạo ra đầu ra từ -infinite đến + infinite trong khi đối với xác suất đầu ra mong muốn của chúng tôi là 0 đến 1. Một cách để làm điều này là bằng cách nào đó ánh xạ các xác suất 0 đến 1 đến vô cực thành + vô cực và sau đó sử dụng hồi quy tuyến tính như bình thường. Một ánh xạ như vậy là phân phối bình thường tích lũy đã được Chester Ittner Bliss sử dụng vào năm 1934 và ông gọi mô hình "probit" này, viết tắt của "đơn vị xác suất". Tuy nhiên, chức năng này đắt tiền về mặt tính toán trong khi thiếu một số thuộc tính mong muốn để phân loại nhiều lớp. Năm 1944 Joseph Berkson sử dụng chức nănglog(p/(1-p))để thực hiện ánh xạ này và gọi nó là logit, viết tắt của "đơn vị logistic". Thuật ngữ hồi quy logistic cũng bắt nguồn từ điều này.

Sự nhầm lẫn

Thật không may, các thuật ngữ đăng nhập bị lạm dụng trong học tập sâu. Từ logit phối cảnh toán học thuần túy là một hàm thực hiện trên ánh xạ. Trong học tập sâu, mọi người bắt đầu gọi lớp là "lớp logits" cung cấp chức năng logit. Sau đó, mọi người bắt đầu gọi các giá trị đầu ra của lớp này là "logit" tạo ra sự nhầm lẫn với logit hàm .

Mã hàng chục

Thật không may, mã TensorFlow thêm vào sự nhầm lẫn bởi các tên như tf.nn.softmax_cross_entropy_with_logits. Nhật ký có ý nghĩa gì ở đây? Nó chỉ có nghĩa là đầu vào của chức năng được coi là đầu ra của lớp nơ ron cuối cùng như mô tả ở trên. Các _with_logitshậu tố là không cần thiết, gây nhầm lẫn và vô nghĩa . Các hàm nên được đặt tên mà không liên quan đến các bối cảnh rất cụ thể như vậy bởi vì chúng đơn giản là các phép toán có thể được thực hiện trên các giá trị xuất phát từ nhiều miền khác. Trong thực tế, TensorFlow có một chức năng tương tự khác sparse_softmax_cross_entropy, trong đó họ may mắn quên thêm _with_logitshậu tố tạo ra sự không nhất quán và thêm vào sự nhầm lẫn. PyTorch mặt khác chỉ đơn giản gọi tên chức năng của nó mà không có các loại hậu tố.

Tài liệu tham khảo

Các slide bài giảng Logit / Probit là một trong những tài nguyên tốt nhất để hiểu logit. Tôi cũng đã cập nhật bài viết Wikipedia với một số thông tin trên.


31

Hiểu biết cá nhân, trong miền TensorFlow, nhật ký là các giá trị được sử dụng làm đầu vào cho softmax. Tôi đã hiểu được điều này dựa trên hướng dẫn kéo căng này.

https://www.tensorflow.org/tutorials/layers


Mặc dù sự thật là logit là một chức năng trong toán học (đặc biệt là trong thống kê), tôi không nghĩ đó là "logit" giống như bạn đang xem xét. Trong cuốn sách Deep Learning của Ian Goodfellow, ông đã đề cập,

Hàm 1 (x) được gọi là logit trong thống kê, nhưng thuật ngữ này hiếm khi được sử dụng trong học máy. σ 1 (x) là viết tắt của hàm nghịch đảo của hàm sigmoid logistic.

Trong TensorFlow, nó thường được xem là tên của lớp cuối cùng. Trong Chương 10 của cuốn sách Học máy thực hành với Scikit-learn và TensorFLow của Aurélien Géron, tôi đã xem qua đoạn này, trong đó nêu rõ logitslớp.

lưu ý rằng đó logitslà đầu ra của mạng nơ ron trước khi đi qua chức năng kích hoạt softmax: vì lý do tối ưu hóa, chúng tôi sẽ xử lý tính toán softmax sau.

Điều đó có nghĩa là, mặc dù chúng tôi sử dụng softmax làm chức năng kích hoạt ở lớp cuối cùng trong thiết kế của chúng tôi, để dễ tính toán, chúng tôi đưa ra logitsmột cách riêng biệt. Điều này là do nó hiệu quả hơn để tính toán softmaxcross-entropymất cùng nhau. Hãy nhớ rằng đó cross-entropylà một hàm chi phí, không được sử dụng trong tuyên truyền về phía trước.


12

Dưới đây là một câu trả lời súc tích cho độc giả trong tương lai. Tensorflow' logitĐược định nghĩa là đầu ra của nơ ron mà không áp dụng chức năng kích hoạt:

logit = w*x + b,

x: đầu vào, w: trọng lượng, b: sai lệch. Đó là nó.


Sau đây là không liên quan đến câu hỏi này.

Đối với các bài giảng lịch sử, đọc câu trả lời khác. Ngả mũ trước Tensorflowquy ước đặt tên khó hiểu "sáng tạo". Trong PyTorchđó, chỉ có một CrossEntropyLossvà nó chấp nhận đầu ra chưa được kích hoạt. Kết hợp, nhân ma trận và kích hoạt là các hoạt động cùng cấp. Thiết kế có nhiều mô-đun và ít nhầm lẫn. Đây là một trong những lý do tại sao tôi chuyển từ Tensorflowtới PyTorch.


8

( FOMO sapiens).

Nếu bạn kiểm tra hàm Logit toán học, nó sẽ chuyển đổi không gian thực từ [0,1]khoảng thời gian sang vô cực[-inf, inf] .

Sigmoid và softmax sẽ làm chính xác điều ngược lại. Họ sẽ chuyển đổi [-inf, inf]không gian [0, 1]thực sang không gian thực.

Đây là lý do tại sao, trong học máy chúng ta có thể sử dụng logit trước chức năng sigmoid và softmax (vì chúng khớp).

Và đây là lý do tại sao "chúng ta có thể gọi" bất cứ điều gì trong học máy đi trước chức năng sigmoid hoặc softmaxlogit .

Đây là video J. Hinton sử dụng thuật ngữ này.

Tái bút Tôi không khuyên bạn nên xem video chỉ để kiểm tra thuật ngữ.


5

Về cơ bản, chúng là mô hình được học đầy đủ nhất mà bạn có thể nhận được từ mạng, trước khi nó bị nghiền nát để chỉ áp dụng cho số lượng lớp chúng ta quan tâm. Hãy xem cách một số nhà nghiên cứu sử dụng chúng để đào tạo mạng lưới thần kinh nông dựa trên mức độ sâu mạng đã học: https://arxiv.org/pdf/1312.6184.pdf

Nó giống như cách khi học một môn học một cách chi tiết, bạn sẽ học được rất nhiều điểm nhỏ, nhưng sau đó khi dạy một học sinh, bạn sẽ cố gắng nén nó vào trường hợp đơn giản nhất. Nếu bây giờ học sinh cố gắng dạy, nó sẽ khá khó, nhưng sẽ có thể mô tả nó đủ tốt để sử dụng ngôn ngữ.


1

Hàm logit (/ ˈloʊdʒɪt / LOH-jit) là nghịch đảo của hàm "logistic" sigmoidal hoặc biến đổi logistic được sử dụng trong toán học, đặc biệt là trong thống kê. Khi biến của hàm đại diện cho xác suất p, hàm logit sẽ đưa ra tỷ lệ cược logarit hoặc logarit của tỷ lệ cược p / (1 - p).

Xem tại đây: https://en.wikipedia.org/wiki/Logit


4
Đó là trong thống kê / toán học. Chúng ta đang nói máy học ở đây, nơi logitcó ý nghĩa khác nhau. Xem cái này , cái này , cái này .
AneesAhmed777

1

nhật ký

Vectơ của các dự đoán thô (không chuẩn hóa) mà một mô hình phân loại tạo ra, thông thường sau đó được chuyển đến một hàm chuẩn hóa. Nếu mô hình đang giải quyết vấn đề phân loại nhiều lớp, các bản ghi thường trở thành đầu vào cho hàm softmax. Hàm softmax sau đó tạo ra một vectơ xác suất (chuẩn hóa) với một giá trị cho mỗi lớp có thể.

Ngoài ra, các bản ghi đôi khi đề cập đến nghịch đảo phần tử của hàm sigmoid. Để biết thêm thông tin, hãy xem tf.nn.sigmoid_cross_entropy_with_logits.

tài liệu tenorflow chính thức


-3

Các bản ghi thường là các giá trị của hàm Z của lớp đầu ra trong Tensorflow.


Không nhất thiết, xem các câu trả lời khác.
lượng
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.