softmax回归逻辑回归的代价函数数为什么是这样的

6568人阅读
Deep Learning(7)
逻辑回归和Softmax回归是两个基础的分类模型,虽然听名字以为是回归模型,但实际我觉得他们也有一定的关系。逻辑回归,Softmax回归以及线性回归都是基于线性模型,它们固定的非线性的基函数(basis function) 的线性组合,形式如下:
2.逻辑回归谈谈逻辑回归,Softmax回归,前者主要处理二分类问题,而后者处理多分类问题,但事实上Softmax回归就是逻辑回归的一般形式。
其中,如果f(.)是非线性的激活函数(activation function),这就是一个分类模型;如果f(.)是恒等函数(identity),则是回归模型,现在可以发现它们三者的联系了吧。
下面主要谈谈逻辑回归,Softmax回归,前者主要处理二分类问题,而后者处理多分类问题,但事实上Softmax回归就是逻辑回归的一般形式。
2. 逻辑回归
定义逻辑回归hypothesis为
其中,为sigmoid函数,其性质可参考。
逻辑回归的理激活函数是sigmoid函数,可理解成一个被sigmoid函数归一化后的线性回归。因为sigmoid函数把实数映射到了[0,1]区间,可以认为为x属于类别1的概率,反正1-为x属于类别1的概率。给定有一个训练数据,构造它的似然函数(likelihood
function)为:
这里的y_n就是上面的 (由于参考了多本书,所以符号有一定的区别),一般会使用最大释然求解参数,这时取一个负的log对数(negative logarithm),得到:
上式被称为交叉熵(cross entropy) loss函数,因为取了一个负对数,之前的最大化就变成了最小化,所以只需求解是交叉熵loss函数最小的参数。
对loss函数求导得到:
到现在为止,我们已经得到了loss函数以及关于参数的偏导数,只需要通过梯度下降就可以得到参数的解,OK,大功告成。
如果需要预测一个为止数据x,属于那个类,只需要带入 。最简单的决策方法,如果 大于等于0.5属于类别1,反之属于类别0,当然也可以属于其他的决策方法。
3. Softmax回归
Softmax回归处理多分类问题,我们假设函数 形式如下:
和逻辑回归一样,得到loss函数为:
其中的1{.}是一个指示性函数,即当大括号中的值为真时,该函数的结果就为1,否则其结果就为0。
然后计算损失函数的偏导函数,得到:
之后就可以用如果要用梯度下降法,或者L-BFGS法求得未知参数。
看上面的推到我们可以发现,对每一个参数减去一个参数,最后的结果没有影响。其实softmax 回归中对参数的最优化解不只一个,每当求得一个优化参数时,如果将这个参数的每一项都减掉同一个数,其得到的损失函数值也是一样的,这说明解不是唯一的。
之所以会出现这样的现象,因为损失函数不是严格非凸的,也就是说在局部最小值点附近是一个”平坦”的,所以在这个参数附近的值都是一样的了。
为避免出现这样的情况,加入正则项(比如说,用牛顿法求解时,hession矩阵如果没有加入规则项,就有可能不是可逆的从而导致了刚才的情况,如果加入了规则项后该hession矩阵就不会不可逆了),加入正则项后的loss函数表达式为:
此时loss函数的偏导函数为:
同样的,我们在逻辑回归中,也可以加上正则项。
4. 逻辑回归与Softmax回归的联系
我们在刚开始的时候说softmax 回归是逻辑回归的一般形式,现在我们看看两者之间的联系。当类别数k = 2 时,softmax 回归退化为逻辑回归,softmax 回归的假设函数为:
利用softmax回归参数冗余的特点,我们令&,并且从两个参数向量中都减去向量,得到:
因此,用来表示,我们就会发现 softmax 回归器预测其中一个类别的概率为,另一个类别概率的为,这与
逻辑回归是一致的。
5. 与神经网络的关系
神经网络是一个多层次的分类模型,其实logistic回归和softmax回归可以看出最简单的神经网络,结构如下图所示:
一般的神经网络有输入层,隐含层以及输出层构成,而上图中只有输入层和输出层,而没有隐含层。神经网络处理二分类时,输出层为一个节点,但处理K(K&2)分类问题时,数据节点为K个,这个logistic回归和softmax回归保持一致。值得注意的,在神经网络中的最后一层隐含层和输出层就可以看成是logistic回归或softmax回归模型,之前的层只是从原始输入数据从学习特征,然后把学习得到的特征交给logistic回归或softmax回归处理。
因此,可以把处理分类问题的神经网络分成两部分,特征学习和logistic回归或softmax回归。
6. 参考:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:122800次
积分:1138
积分:1138
排名:千里之外
原创:24篇
评论:11条
(1)(1)(2)(10)(17)(3)11668人阅读
机器学习(6)
softmax的函数公式如下:
另外,softmax不仅把神经元输出构造成概率分布,而且还起到了归一化的作用,适用于很多需要进行归一化处理的分类问题。
由于softmax在ANN算法中的求导结果比较特别,分为两种情况。希望能帮助到正在学习此类算法的朋友们。
在上一篇博文中讲到,二次代价函数在训练ANN时可能会导致训练速度变慢的问题。那就是,初始的输出值离真实值越远,训练速度就越慢。这个问题可以通过采用交叉熵代价函数来解决。其实,这个问题也可以采用另外一种方法解决,那就是采用softmax激活函数,并采用log似然代价函数(log-likelihood
cost function)来解决。
log似然代价函数的公式为:
其中,表示第k个神经元对应的真实值,取值为0或1。
我们来简单理解一下这个代价函数的含义。在ANN中输入一个样本,那么只有一个神经元对应了该样本的正确类别;若这个神经元输出的概率值越高,则按照以上的代价函数公式,其产生的代价就越小;反之,则产生的代价就越高。
为了检验softmax和这个代价函数也可以解决上述所说的训练速度变慢问题,接下来的重点就是推导ANN的权重w和偏置b的梯度公式。以偏置b为例:
同理可得:
从上述梯度公式可知,softmax函数配合log似然代价函数可以很好地训练ANN,不存在学习速度变慢的问题。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:99960次
排名:千里之外
原创:25篇
评论:20条
(3)(1)(1)(1)(4)(3)(6)(1)(1)(5)手打例子一步一步带你看懂softmax函数以及相关求导过程 - 简书
手打例子一步一步带你看懂softmax函数以及相关求导过程
这几天学习了一下softmax激活函数,以及它的梯度求导过程,整理一下便于分享和交流!softmax函数softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是
更形象的如下图表示:
softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标!举一个我最近碰到利用softmax的例子:我现在要实现基于神经网络的句法分析器。用到是基于转移系统来做,那么神经网络的用途就是帮我预测我这一个状态将要进行的动作是什么?比如有10个输出神经元,那么就有10个动作,1动作,2动作,3动作...一直到10动作。(这里涉及到nlp的知识,大家不用管,只要知道我现在根据每个状态(输入),来预测动作(得到概率最大的输出),最终得到的一系列动作序列就可以完成我的任务即可)原理图如下图所示:
那么比如在一次的输出过程中输出结点的值是如下:[0.2,0.1,0.05,0.1,0.2,0.02,0.08,0.01,0.01,0.23]那么我们就知道这次我选取的动作是动作10,因为0.23是这次概率最大的,那么怎么理解多分类呢?很容易,如果你想选取俩个动作,那么就找概率最大的俩个值即可~(这里只是简单的告诉大家softmax在实际问题中一般怎么应用)
softmax相关求导
当我们对分类的Loss进行改进的时候,我们要通过梯度下降,每次优化一个step大小的梯度,这个时候我们就要求Loss对每个权重矩阵的偏导,然后应用链式法则。那么这个过程的第一步,就是对softmax求导传回去,不用着急,我后面会举例子非常详细的说明。在这个过程中,你会发现用了softmax函数之后,梯度求导过程非常非常方便!下面我们举出一个简单例子,原理一样,目的是为了帮助大家容易理解!
我们能得到下面公式:z4 = w41*o1+w42*o2+w43*o3z5 = w51*o1+w52*o2+w53*o3z6 = w61*o1+w62*o2+w63*o3z4,z5,z6分别代表结点4,5,6的输出,01,02,03代表是结点1,2,3往后传的输入.那么我们可以经过softmax函数得到
好了,我们的重头戏来了,怎么根据求梯度,然后利用梯度下降方法更新梯度!要使用梯度下降,肯定需要一个损失函数,这里我们使用交叉熵作为我们的损失函数,为什么使用交叉熵损失函数,不是这篇文章重点,后面有时间会单独写一下为什么要用到交叉熵函数(这里我们默认选取它作为损失函数)交叉熵函数形式如下:
其中y代表我们的真实值,a代表我们softmax求出的值。i代表的是输出结点的标号!在上面例子,i就可以取值为4,5,6三个结点(当然我这里只是为了简单,真实应用中可能有很多结点)现在看起来是不是感觉复杂了,居然还有累和,然后还要求导,每一个a都是softmax之后的形式!但是实际上不是这样的,我们往往在真实中,如果只预测一个结果,那么在目标中只有一个结点的值为1,比如我认为在该状态下,我想要输出的是第四个动作(第四个结点),那么训练数据的输出就是a4 = 1,a5=0,a6=0,哎呀,这太好了,除了一个为1,其它都是0,那么所谓的求和符合,就是一个幌子,我可以去掉啦!为了形式化说明,我这里认为训练数据的真实输出为第j个为1,其它均为0!那么Loss就变成了Loss = -yilnaj(yi,aj的i,j均为下标,公式不好打),累和已经去掉了,太好了。现在我们要开始求导数了!我们在整理一下上面公式,为了更加明白的看出相关变量的关系:其中yj=1,,那么形式变为Loss = -lnaj那么形式越来越简单了,求导分析如下:参数的形式在该例子中,总共分为w41,w42,w43,w51,w52,w53,w61,w62,w63.这些,那么比如我要求出w41,w42,w43的偏导,就需要将Loss函数求偏导传到结点4,然后再利用链式法则继续求导即可,举个例子此时求w41的偏导为:
w51.....w63等参数的偏导同理可以求出,那么我们的关键就在于Loss函数对于结点4,5,6的偏导怎么求,如下:这里分为俩种情况:
j=i对应例子里就是如下图所示:比如我选定了j为4,那么就是说我现在求导传到4结点这!
那么由上面求导结果再乘以交叉熵损失函数求导Loss = -lnaj,它的导数为-1/aj,与上面的aj(1-aj)相乘为aj-1(形式非常简单,这说明我只要正向求一次得出结果,然后反向传梯度的时候,只需要将它结果减1即可,后面还会举例子!)那么我们可以得到Loss对于4结点的偏导就求出了了(这里假定4是我们的预计输出)第二种情况为:
这里对应我的例子图如下,我这时对的是j不等于i,往前传:
那么由上面求导结果再乘以交叉熵损失函数求导Loss = -lnaj,它的导数是-1/aj,与上面-ajai相乘为ai(形式非常简单,这说明我只要正向求一次得出结果,然后反向传梯度的时候,只需要将它结果保存即可,后续例子会讲到)这里就求出了除4之外的其它所有结点的偏导,然后利用链式法则继续传递过去即可!我们的问题也就解决了!下面我举个例子来说明为什么计算会比较方便,给大家一个直观的理解举个例子,通过若干层的计算,最后得到的某个训练样本的向量的分数是[ 2, 3, 4 ],那么经过softmax函数作用后概率分别就是=[e^2/(e^2+e^3+e^4),e^3/(e^2+e^3+e^4),e^4/(e^2+e^3+e^4)] = [0.7,0.665],如果这个样本正确的分类是第二个的话,那么计算出来的偏导就是[0.7-1,0.665]=[0.3,0.665],是不是非常简单!!然后再根据这个进行back propagation就可以了到这里,这篇文章的内容就讲完了,我希望根据自己的理解,通过列出大量例子,直白的给大家讲解softmax的相关内容,让大家少走弯路,真心希望对大家的理解有帮助!欢迎交流指错!画图整理不易,觉得有帮助的给个赞呗,哈哈!参考:部分图片来自于网络!
个人微信:qinlibo.个人公众号[自然语言处理与机器学习][yizhennotes]记录我所有的笔记和感悟,欢迎订阅~哈尔滨工业大学SCIR实验室推免生,省优秀毕业生.研究方向为自然语言处理.大学期间担任高等数学,线代等课程学生教员.本科期间获得俩次国家奖学金.竞赛方面获:美国数学建模竞赛国际一等奖.全国数学建模竞赛全国二等奖,省数学建模竞赛一等奖,省ACM-ICPC程序设计竞赛银奖.神经网络多分类softmax
feedforwardnet
在做分类问题的时候,使用了patternnet分类网络,网络结构如图所示,结果到是得出来了,但是有点疑问,我想更改训练的train data,validation data,test data 的比率,网上说这个结构不能更改参数,只能使用默认值,这个说法是不对的,新建一个网络后
net = wpatternnet(10,’traingd’,’mse’);
net.divideParam.trainRatio=0.7;
net.divideParam.valRatio=0.15;
net.divideParam.testRatio=0.15;
可以通过net的属性来更改网络,但是这个属性怎么的到呢?其实是先训练完网络,然在matlab的工作空间中查看net,直接在command 窗口输入net就看到net 的properties。
Neural Network
name: 'Pattern Recognition Neural Network'
userdata: (your custom info)
dimensions:
numInputs: 1(输入层一个)
numLayers: 2(隐含层+输出层,隐含层是一个,输出层也一个,难道是按照计算节点分的?)
numOutputs: 1(输出层)
numInputDelays: 0
numLayerDelays: 0
numFeedbackDelays: 0
numWeightElements: 105
sampleTime: 1
connections:
biasConnect: [1; 1]
inputConnect: [1; 0]
layerConnect: [0 0; 1 0]
outputConnect: [0 1]
subobjects:
input: Equivalent to inputs{1}
output: Equivalent to outputs{2}
inputs: {1x1 cell array of 1 input}
layers: {2x1 cell array of 2 layers}
outputs: {1x2 cell array of 1 output}
biases: {2x1 cell array of 2 biases}
inputWeights: {2x1 cell array of 1 weight}
layerWeights: {2x2 cell array of 1 weight}
functions:
adaptFcn: 'adaptwb'
adaptParam: (none)
derivFcn: 'defaultderiv'
divideFcn: 'dividerand'
divideParam: .trainRatio, .valRatio, .testRatio(这里就可以更改比例)
divideMode: 'sample'
initFcn: 'initlay'
performFcn: 'crossentropy'(评价函数或者叫)
performParam: .regularization, .normalization
plotFcns: {'plotperform', plottrainstate, ploterrhist,
plotconfusion, plotroc}
plotParams: {1x5 cell array of 5 params}
trainFcn: 'trainscg'(训练算法)
trainParam: .showWindow, .showCommandLine, .show, .epochs,
.time, .goal, .min_grad, .max_fail, .sigma,
weight and bias values:
IW: {2x1 cell} containing 1 input weight matrix
LW: {2x2 cell} containing 1 layer weight matrix
b: {2x1 cell} containing 2 bias vectors
adapt: Learn while in continuous use
configure: Configure inputs & outputs
gensim: Generate Simulink model
init: Initialize weights & biases
perform: Calculate performance
sim: Evaluate network outputs given inputs
train: Train network with examples
view: View diagram
unconfigure: Unconfigure inputs & outputs
outputs = net(inputs)
这些信息,可以直接到matlab的帮助文档中找到, 直接输入network即可。
但是我做分类问题,我看可输出层的激活函数有点奇怪,并不是我在书本上学到的S型激活函数,或者是线性激活函数,我查看了net.outputs的所有属性就是没有发现,激活函数的函数名称。
&& net.outputs{2}
Neural Network Output
name: 'Output'
feedbackInput: []
feedbackDelay: 0
feedbackMode: 'none'
processFcns: {}(这个是输出预处理函数,同样也有输入预处理函数,一般是mapmaxmin)
processParams: {1x0 cell array of 0 params}
processSettings: {0x0 cell array of 0 settings}
processedRange: [5x2 double]
processedSize: 5
range: [5x2 double]
userdata: (your custom info)
如下是输入的预处理函数
&& net.inputs{1}
Neural Network Input
name: 'Input'
feedbackOutput: []
processFcns: {'mapminmax'}(输入预处理函数,数据归一化函数)
processParams: {1x1 cell array of 1 param}
processSettings: {1x1 cell array of 1 setting}
processedRange: [4x2 double]
processedSize: 4
range: [4x2 double]
userdata: (your custom info)
It is assumed that X has only finite real values, and that the elements of each row are not all equal.
这是公式: y = (ymax-ymin)*(x-xmin)/(xmax-xmin) +
之后在layers中找到了
&& net.layers{1}
Neural Network Layer
name: 'Hidden'
dimensions: 10
distanceFcn: (none)
distanceParam: (none)
distances: []
initFcn: 'initnw'
netInputFcn: 'netsum'
netInputParam: (none)
positions: []
range: [10x2 double]
topologyFcn: (none)
transferFcn: 'tansig'
(这个隐含层的函数叫tansig,不知道为什么叫做transform function,
transferParam: (none)
不是应该叫activation function的吗?怪不得一直搜不到)
userdata: (your custom info)
&& net.layers{2}
Neural Network Layer
name: 'Output'
dimensions: 5
distanceFcn: (none)
distanceParam: (none)
distances: []
initFcn: 'initnw'
netInputFcn: 'netsum'
netInputParam: (none)
positions: []
range: [5x2 double]
topologyFcn: (none)
transferFcn: 'softmax'
(这就是softmax函数了)
transferParam: (none)
userdata: (your custom info)
那么为什么这个问题要用模式分类的ANN默认使用softmax作为输出层的激活函数?
在丛爽《神经网络、模糊系统及其在运动控制中的应用》一书中,P14提到反向传播网络的激活函数必须是处处可微的,所以不能采用二值的阀值或者符号函数,这个是因为如果要是处处可微的,那意味着器一阶导数处处存在,那么训练算法就可以利用梯度法进行推算,在权值的更新中P17页用到了输出函数的一阶导数。
那么softmax到底有什么好处?维基百科中的定义是这样的:()
“softmax function is a generalization of the
that maps a length-p vector of real values to a length-K vector of values”
将一个长度为p的向量映射为长为K的向量。
我们计算一下
有一个向量[0 1 -0.5 0.5]经过上式后的[0.1 0.0]对应的图形如图
看下知乎中几个人回答的,最后一个最直观。
1、就是如果某一个zj大过其他zi,那这个映射的分量就逼近于1,其他就逼近于0,主要应用就是多分类,sigmoid函数只能分两类,而softmax能分多类,softmax是sigmoid的扩展。
2、在于softmax设计的初衷,是希望特征对概率的影响是乘性的。多类分类问题的目标函数常常选为cross-entropy,即,其中目标类的等于1,其它类的等于0。
在神经网络模型(最简单的logistic regression也可看成没有隐含层的神经网络)中,输出层第i个神经元的输入为。神经网络是用error back-propagation训练的,这个过程中有一个关键的量是。可以算出,同时使用softmax和cross-entropy时,。
这个形式非常简洁,而且与线性回归(采用最小均方误差目标函数)、两类分类(采用cross-entropy目标函数)时的形式一致。
3、先理解max. 对一个三类问题,某样本经过NN处理后,最后一层输出值为[24,3,0.1]的话,那么经过max之后的结果为[1,0,0]。对不?
(至于为啥要max,输出结果本来挺奇怪 经过max以后就是categorical 的了,那么样本的类标就可以和他的预测值一起合体 直观地计算cost function。)
我们最需要的其实是max,但是max有个缺点就是不可导,没法用在dp里,于是有人就想出了softmax。思路就是指数级扩大最后一层的输出,每个值都会增大,然而最大的那个值相比其他值扩大的更多,然后归一化一下,考虑一下极限,如果最大值x_1经过指数运算后想对其他值为无穷大,那么exp(x_1)/exp(x_1)+others =1,其他输出值对应的为0。所以softmax模拟了max的行为,同时他还可导。至于其他的归一化准则,有什么优点呢?
将一组数变换为
总和为1,各个数为0~1之间的软性归一化结果。
=========================================================
关于logistic regression中的softmax 函数
是用来柔化输出值,减小值之间的差。用来归一化一组值到0~1之间,
求出最大值max
由exp表达式将各个值转化为0~1之间的数
exp(x[i] – max)
求sum,归一化。
void LogisticRegression::softmax(double *x) {
double max = 0.0;
double sum = 0.0;
for(int i=0; i&n_ i++) if(max & x[i]) max = x[i];
for(int i=0; i&n_ i++) {
x[i] = exp(x[i] - max);
sum += x[i];
for(int i=0; i&n_ i++) x[i] /=
——————————————————————————————————————————————
但是交叉熵(cross-Cross Entropy)是什么鬼?
有位博主解释的非常好。
本文是《Neural networks and deep learning》概览 中第三章的一部分,讲machine learning算法中用得很多的交叉熵代价函数。
1.从方差代价函数说起
代价函数经常用方差代价函数(即采用均方误差MSE),比如对于一个神经元(单输入单输出,sigmoid函数),定义其代价函数为:
其中y是我们期望的输出,a为神经元的实际输出【 a=σ(z), where z=wx+b 】。
在训练神经网络过程中,我们通过梯度下降算法来更新w和b,因此需要计算代价函数对w和b的导数:
然后更新w、b:
w &—— w – η* ?C/?w = w – η * a *σ′(z)
b &—— b – η* ?C/?b = b – η * a * σ′(z)
因为sigmoid函数的性质,导致σ′(z)在z取大部分值时会很小(如下图标出来的两端,几近于平坦),这样会使得w和b更新非常慢(因为η * a * σ′(z)这一项接近于0)。
2.交叉熵代价函数(cross-entropy cost function)
为了克服这个缺点,引入了交叉熵代价函数(下面的公式对应一个神经元,多输入单输出):
其中y为期望的输出,a为神经元实际输出【a=σ(z), where z=∑Wj*Xj+b】
与方差代价函数一样,交叉熵代价函数同样有两个性质:
非负性。(所以我们的目标就是最小化代价函数)
当真实输出a与期望输出y接近的时候,代价函数接近于0.(比如y=0,a~0;y=1,a~1时,代价函数都接近0)。
另外,它可以克服方差代价函数更新权重过慢的问题(这就是使用softmax作为输出层激活函数的好处)。我们同样看看它的导数:
可以看到,导数中没有σ′(z)这一项,权重的更新是受σ(z)-y这一项影响,即受误差的影响。所以当误差大的时候,权重更新就快,当误差小的时候,权重的更新就慢。这是一个很好的性质。
当我们用sigmoid函数作为神经元的激活函数时,最好使用交叉熵代价函数来替代方差代价函数,以避免训练过程太慢。
不过,你也许会问,为什么是交叉熵函数?导数中不带σ′(z)项的函数有无数种,怎么就想到用交叉熵函数?这自然是有来头的,更深入的讨论就不写了,少年请自行了解。
另外,交叉熵函数的形式是-[ylna+(1-y)ln(1-a)]而不是 -[alny+(1-a)ln(1-y)],为什么?因为当期望输出的y=0时,lny没有意义;当期望y=1时,ln(1-y)没有意义。而因为a是sigmoid函数的实际输出,永远不会等于0或1,只会无限接近于0或者1,因此不存在这个问题。
4.还要说说:log-likelihood cost
对数似然函数也常用来作为softmax回归的代价函数,在上面的讨论中,我们最后一层(也就是输出)是通过sigmoid函数,因此采用了交叉熵代价函数。而深度学习中更普遍的做法是将softmax作为最后一层,此时常用的是代价函数是log-likelihood cost。
In fact, it’s useful to think of a softmax output layer with log-likelihood cost as being quite similar to a sigmoid output layer with cross-entropy cost。
其实这两者是一致的,logistic回归用的就是sigmoid函数,softmax回归是logistic回归的多类别推广。log-likelihood代价函数在二类别时就可以化简为交叉熵代价函数的形式。具体可以参考
http://blog.csdn.net/u/article/details/
此条目发表在分类目录。将加入收藏夹。
2017年六月 &(1)
2017年五月 &(13)
2017年四月 &(5)
2017年三月 &(11)
2017年二月 &(8)
2016年十二月 &(1)
2016年十一月 &(7)
2016年十月 &(2)
2016年九月 &(12)
2016年八月 &(4)
2016年六月 &(1)
2016年五月 &(3)
2016年四月 &(9)
2016年三月 &(45)
2016年二月 &(7)
2016年一月 &(9)
2015年十二月 &(19)
2015年十一月 &(20)
2015年十月 &(10)
2015年九月 &(9)
2015年八月 &(24)
2015年七月 &(15)
2015年六月 &(32)
2015年五月 &(20)
2015年四月 &(33)
2015年三月 &(44)
2015年二月 &(23)
2015年一月 &(74)
2014年十二月 &(88)
2014年十一月 &(21)
2014年九月 &(6)
2017年七月
10111213141516
17181920212223
24252627282930
分类目录分类目录
选择分类目录
一些问题&&解决方法&&(24)
人工智能&&(15)
&&&专家系统&&(14)
嵌入式&&(1)
bootstrap&&(5)
c & c++&&(9)
command&&(39)
Contiki&&(9)
算法相关&&(4)
网络相关&&(20)
Django&&(25)
driver&&(2)
emotion&&(12)
读书笔记&&(26)
freeshell&&(11)
Html&&(14)
makefile&&(1)
nginx&&(4)
paper notes&&(4)
python&&(61)
shell脚本&&(15)
software configure&&(51)
the knowledge u need know&&(104)
toefl&&(2)
ubuntu&&(83)
windows&&(3)
未分类&&(130)
收集的信息&&(9)

我要回帖

更多关于 线性回归的代价函数 的文章

 

随机推荐