TensorFlow:经典损失函数

 一,经典损失函数

交叉熵是一个信息论中的概念,它原本是用力啊估算平均编码长度的。在解决分类问题中,交叉熵刻画了两个概率分布之间的距离,是使用比较广的一种损失函数。给定两个概率分布p和q,通过q来表示p的交叉熵为:


注意的是,交叉熵酷话的是两个概率分布之间的距离,然而神经网络的输出却不一定是一个概率分布。概率分布刻画了不同事件发生的概率。把神经网络前向传播得到的结果变成概率分布,Softmax回归是一个常用的方法。经过Softmax回归处理后的输出为:


在TensorFlow中实现交叉熵代码如下:

cross_entropy = -tf.reduce_mean( y_*tf.log( tf.clip_by_value( y, 1e-10, 1 ) ) )
y_代表正确结果,y代表预测结果

其中

tf.clip_by_value( y, 1e-10, 1.0 )
该函数可以将一个张量中的数值限制在1e-10到1中间的范围。张量y中,低于1e-10的取值为1e-10,高于1的取值为1


tf.log(x)
该函数可以将张量中的所有数据依次取对数


tf.reduce_mean(x)
该函数直接对整个矩阵做平均


此外,交叉熵一般会和softmax回归一起使用,所以TensorFlow对这两个功能进行了统一封装,提供了一个专门的函数:

cross_entropy = tf.nn.softmax_cross_entropy_with_logits( y, y_ )

在只有一个正确答案的分类问题中,还可以用另一个函数加速计算

cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits( y, y_ )

与分类问题不同,回归问题解决的是对具体数值的预测。解决回归问题的神经网络一般只有一个输出节点,对此常用的损失函数是均方误差:

用TenrsorFlow实现代码为:

mse = tf.reduce_mean( tf.square( y_ - y ) )





G
M
T
Detect languageAfrikaansAlbanian ArabicArmenian AzerbaijaniBasqueBelarusian BengaliBosnian BulgarianCatalanCebuano ChichewaChinese (Simplified) Chinese (Traditional)Croatian CzechDanishDutch EnglishEsperantoEstonian FilipinoFinnishFrench GalicianGeorgianGerman GreekGujaratiHaitian Creole HausaHebrew HindiHmongHungarian IcelandicIgboIndonesian IrishItalianJapanese JavaneseKannadaKazakh KhmerKoreanLao LatinLatvianLithuanian MacedonianMalagasyMalay MalayalamMalteseMaori MarathiMongolianMyanmar (Burmese) NepaliNorwegian PersianPolishPortuguese PunjabiRomanianRussian SerbianSesothoSinhala SlovakSlovenianSomali SpanishSundaneseSwahili SwedishTajikTamil TeluguThaiTurkish UkrainianUrduUzbek VietnameseWelshYiddish YorubaZulu
AfrikaansAlbanianArabic ArmenianAzerbaijaniBasque BelarusianBengali BosnianBulgarianCatalan CebuanoChichewaChinese (Simplified) Chinese (Traditional)Croatian CzechDanish DutchEnglishEsperanto EstonianFilipinoFinnish FrenchGalicianGeorgian GermanGreekGujarati Haitian CreoleHausaHebrew HindiHmong HungarianIcelandicIgbo IndonesianIrishItalian JapaneseJavaneseKannada KazakhKhmerKorean LaoLatinLatvian LithuanianMacedonianMalagasy MalayMalayalam MalteseMaoriMarathi MongolianMyanmar (Burmese) NepaliNorwegianPersian PolishPortuguesePunjabi RomanianRussianSerbian SesothoSinhalaSlovak SlovenianSomaliSpanish SundaneseSwahiliSwedish TajikTamilTelugu ThaiTurkishUkrainian UrduUzbekVietnamese WelshYiddishYoruba Zulu
Text-to-speech function is limited to 200 characters
Options : History : Feedback : Donate Close

你可能感兴趣的:(神经网络)