神经网络 loss函数gloss 下降速度一般是多少

从头开始实现神经网络:入门 - Python - 伯乐在线
& 从头开始实现神经网络:入门
本文中我们会从头实现一个简单的3层神经网络。我们不会推导所有的数学公式,但会给我们正在做的事情一个相对直观的解释。我也会给出你研读所需的资源链接。
这里假设你已经比较熟悉微积分和机器学习的概念了。比如,你知道什么是分类和正则化。当然你也应该了解一点优化技巧,如梯度下降是如何工作的。但是即使你对上面提到的任何一个概念都不熟悉,你仍然会发现本文的有趣所在。
但是为什么要从头实现一个神经网络呢?即使你打算将来使用像这样的神经网络库,从头实现神经网络仍然是一次非常有价值的练习。它会帮助你理解神经网络的工作原理,而这是设计有效模型的必备技能。
需要注意的是这里的示例代码并不是十分高效,它们本就是用来帮助理解的。在接下来的文章中,我会探索如何使用写一个高效的神经网络实现。
产生数据集
让我们从力所能及的产生数据集开始吧。幸运的是,提供了一些很有用的数据集产生器,所以我们不需要自己写代码了。我们将从 函数开始。
# Generate a dataset and plot it
np.random.seed(0)
X, y = sklearn.datasets.make_moons(200, noise=0.20)
plt.scatter(X[:,0], X[:,1], s=40, c=y, cmap=plt.cm.Spectral)
# Generate a dataset and plot itnp.random.seed(0)X, y = sklearn.datasets.make_moons(200, noise=0.20)plt.scatter(X[:,0], X[:,1], s=40, c=y, cmap=plt.cm.Spectral)
产生的数据集中有两类数据,分别以红点和蓝点表示。你可以把蓝点看作是男性病人,红点看作是女性病人,x和y轴表示药物治疗。
我们的目标是,在给定x和y轴的情况下训练机器学习分类器以预测正确的分类(男女分类)。注意,数据并不是线性可分的,我们不能直接画一条直线以区分这两类数据。这意味着线性分类器,比如Logistic回归,将不适用于这个数据集,除非手动构建在给定数据集表现很好的非线性特征(比如多项式)。
事实上,这也是神经网络的主要优势。你不用担心,神经网络的隐藏层会为你学习特征。
Logistic回归
为了证明这个观点,我们来训练一个Logistic回归分类器。它的输入是x和y轴的值,输出预测的分类(0或1)。为了简单,我们使用scikit-learn库里的Logistic回归类。
# Train the logistic rgeression classifier
clf = sklearn.linear_model.LogisticRegressionCV()
clf.fit(X, y)
# Plot the decision boundary
plot_decision_boundary(lambda x: clf.predict(x))
plt.title("Logistic Regression")
# Train the logistic rgeression classifierclf = sklearn.linear_model.LogisticRegressionCV()clf.fit(X, y)&# Plot the decision boundaryplot_decision_boundary(lambda x: clf.predict(x))plt.title("Logistic Regression")
上图展示了Logistic回归分类器学习到的决策边界。使用一条直线尽量将数据分离开来,但它并不能捕捉到数据的“月形”特征。
训练神经网络
让我们来建立具有一个输入层、一个隐藏层、一个输出层的三层神经网络。输入层的结点数由数据维度决定,这里是2维。类似地,输出层的结点数由类别数决定,也是2。(因为我们只有两类输出,实际中我们会避免只使用一个输出结点预测0和1,而是使用两个输出结点以使网络以后能很容易地扩展到更多类别)。网络的输入是x和y坐标,输出是概率,一个是0(女性)的概率,一个是1(男性)的概率。它看起来像下面这样:
我们可以为隐藏层选择维度(结点数)。放入隐藏层的结点越多,我们能训练的函数就越复杂。但是维度过高也是有代价的。首先,预测和学习网络的参数就需要更多的计算。参数越多就意味着我们可能会过度拟合数据。
如何选择隐藏层的规模?尽管有一些通用的指导和建议,但还是依赖于具体问题具体分析,与其说它是一门科学不如说是一门艺术。我们稍后会在隐藏层的结点数上多做一点事情,然后看看它会对输出有什么影响。
我们还需要为隐藏层挑选一个激活函数。激活函数将该层的输入转换为输出。一个非线性激活函数允许我们拟合非线性假设。常用的激活函数有、the 函数或者是。这里我们选择使用在很多场景下都能表现很好的tanh函数。这些函数的一个优点是它们的导数可以使用原函数值计算出来。例如,tanh x的导数是1-tanh^2 x。这个特性是很有用的,它使得我们只需要计算一次tanh x值,之后只需要重复使用这个值就可以得到导数值。
因为我们想要得到神经网络输出概率,所以输出层的激活函数就要是。这是一种将原始分数转换为概率的方法。如果你很熟悉logistic回归,可以把softmax看作是它在多类别上的一般化。
神经网络如何预测
神经网络使用前向传播进行预测。前向传播只不过是一堆矩阵相乘并使用我们上面定义的激活函数了。假如x是该网络的2维输入,我们将按如下计算预测值(也是二维的):
zi是输入层、ai是输出层。W1,b1,W2,b2是需要从训练数据中学习的网络参数。你可以把它们看作是神经网络各层之间数据转换矩阵。看着上文的矩阵相乘,我们可以计算出这些矩阵的维度。如果我们的隐藏层中使用500个结点,那么有
现在你明白了为什么增大隐藏层的规模会导致需要训练更多参数。
学习该网络的参数意味着要找到使训练集上错误率最小化的参数(W1,b1,W2,b2)。但是如何定义错误率呢?我们把衡量错误率的函数叫做损失函数(loss function)。输出层为softmax时多会选择交叉熵损失(cross-entropy loss)。假如我们有N个训练例子和C个分类,那么预测值(hat{y})相对真实标签值的损失就由下列公式给出:
这个公式看起来很复杂,但实际上它所做的事情不过是把所有训练例子求和,然后加上预测值错误的损失。所以,hat{y}(预测值)距离 hat{y}(真实标签值)越远,损失值就越大。
要记住,我们的目标是找到能最小化损失函数的参数值。我们可以使用方法找到最小值。我会实现梯度下降的一种最普通的版本,也叫做有固定学习速率的批量梯度下降法。诸如SGD(随机梯度下降)或minibatch梯度下降通常在实践中有更好的表现。所以,如果你是认真的,这些可能才是你的选择,最好还能。
作为输入,梯度下降需要一个与参数相关的损失函数的梯度(导数矢量):,。为了计算这些梯度,我们使用了著名的后向传播算法。这个算法是从输出计算梯度的一种很高效的方法。在这里我不会深入讲解后向传播如何工作,但是在网络上流传有很多很优秀的讲解(参见或是)。
应用后向传播公式我们发现以下内容(这点你要相信我):
现在我们要准备开始实现网络了。我们从定义梯度下降一些有用的变量和参数开始:
num_examples = len(X) # training set size
nn_input_dim = 2 # input layer dimensionality
nn_output_dim = 2 # output layer dimensionality
# Gradient descent parameters (I picked these by hand)
epsilon = 0.01 # learning rate for gradient descent
reg_lambda = 0.01 # regularization strength
num_examples = len(X) # training set sizenn_input_dim = 2 # input layer dimensionalitynn_output_dim = 2 # output layer dimensionality&# Gradient descent parameters (I picked these by hand)epsilon = 0.01 # learning rate for gradient descentreg_lambda = 0.01 # regularization strength
首先要实现我们上面定义的损失函数。以此来衡量我们的模型工作得如何:
# Helper function to evaluate the total loss on the dataset
def calculate_loss(model):
W1, b1, W2, b2 = model['W1'], model['b1'], model['W2'], model['b2']
# Forward propagation to calculate our predictions
z1 = X.dot(W1) + b1
a1 = np.tanh(z1)
z2 = a1.dot(W2) + b2
exp_scores = np.exp(z2)
probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True)
# Calculating the loss
corect_logprobs = -np.log(probs[range(num_examples), y])
data_loss = np.sum(corect_logprobs)
# Add regulatization term to loss (optional)
data_loss += reg_lambda/2 * (np.sum(np.square(W1)) + np.sum(np.square(W2)))
return 1./num_examples * data_loss
123456789101112131415
# Helper function to evaluate the total loss on the datasetdef calculate_loss(model):&&&&W1, b1, W2, b2 = model['W1'], model['b1'], model['W2'], model['b2']&&&&# Forward propagation to calculate our predictions&&&&z1 = X.dot(W1) + b1&&&&a1 = np.tanh(z1)&&&&z2 = a1.dot(W2) + b2&&&&exp_scores = np.exp(z2)&&&&probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True)&&&&# Calculating the loss&&&&corect_logprobs = -np.log(probs[range(num_examples), y])&&&&data_loss = np.sum(corect_logprobs)&&&&# Add regulatization term to loss (optional)&&&&data_loss += reg_lambda/2 * (np.sum(np.square(W1)) + np.sum(np.square(W2)))&&&&return 1./num_examples * data_loss
还要实现一个辅助函数来计算网络的输出。它的工作就是传递前面定义的前向传播并返回概率最高的类别。
# Helper function to predict an output (0 or 1)
def predict(model, x):
W1, b1, W2, b2 = model['W1'], model['b1'], model['W2'], model['b2']
# Forward propagation
z1 = x.dot(W1) + b1
a1 = np.tanh(z1)
z2 = a1.dot(W2) + b2
exp_scores = np.exp(z2)
probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True)
return np.argmax(probs, axis=1)
12345678910
# Helper function to predict an output (0 or 1)def predict(model, x):&&&&W1, b1, W2, b2 = model['W1'], model['b1'], model['W2'], model['b2']&&&&# Forward propagation&&&&z1 = x.dot(W1) + b1&&&&a1 = np.tanh(z1)&&&&z2 = a1.dot(W2) + b2&&&&exp_scores = np.exp(z2)&&&&probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True)&&&&return np.argmax(probs, axis=1)
最后是训练神经网络的函数。它使用上文中发现的后向传播导数实现批量梯度下降。
# This function learns parameters for the neural network and returns the model.
# - nn_hdim: Number of nodes in the hidden layer
# - num_passes: Number of passes through the training data for gradient descent
# - print_loss: If True, print the loss every 1000 iterations
def build_model(nn_hdim, num_passes=20000, print_loss=False):
# Initialize the parameters to random values. We need to learn these.
np.random.seed(0)
W1 = np.random.randn(nn_input_dim, nn_hdim) / np.sqrt(nn_input_dim)
b1 = np.zeros((1, nn_hdim))
W2 = np.random.randn(nn_hdim, nn_output_dim) / np.sqrt(nn_hdim)
b2 = np.zeros((1, nn_output_dim))
# This is what we return at the end
model = {}
# Gradient descent. For each batch...
for i in xrange(0, num_passes):
# Forward propagation
z1 = X.dot(W1) + b1
a1 = np.tanh(z1)
z2 = a1.dot(W2) + b2
exp_scores = np.exp(z2)
probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True)
# Backpropagation
delta3 = probs
delta3[range(num_examples), y] -= 1
dW2 = (a1.T).dot(delta3)
db2 = np.sum(delta3, axis=0, keepdims=True)
delta2 = delta3.dot(W2.T) * (1 - np.power(a1, 2))
dW1 = np.dot(X.T, delta2)
db1 = np.sum(delta2, axis=0)
# Add regularization terms (b1 and b2 don't have regularization terms)
dW2 += reg_lambda * W2
dW1 += reg_lambda * W1
# Gradient descent parameter update
W1 += -epsilon * dW1
b1 += -epsilon * db1
W2 += -epsilon * dW2
b2 += -epsilon * db2
# Assign new parameters to the model
model = { 'W1': W1, 'b1': b1, 'W2': W2, 'b2': b2}
# Optionally print the loss.
# This is expensive because it uses the whole dataset, so we don't want to do it too often.
if print_loss and i % 1000 == 0:
print "Loss after iteration %i: %f" %(i, calculate_loss(model))
return model
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
# This function learns parameters for the neural network and returns the model.# - nn_hdim: Number of nodes in the hidden layer# - num_passes: Number of passes through the training data for gradient descent# - print_loss: If True, print the loss every 1000 iterationsdef build_model(nn_hdim, num_passes=20000, print_loss=False):&&&&&# Initialize the parameters to random values. We need to learn these.&&&&np.random.seed(0)&&&&W1 = np.random.randn(nn_input_dim, nn_hdim) / np.sqrt(nn_input_dim)&&&&b1 = np.zeros((1, nn_hdim))&&&&W2 = np.random.randn(nn_hdim, nn_output_dim) / np.sqrt(nn_hdim)&&&&b2 = np.zeros((1, nn_output_dim))&&&&&# This is what we return at the end&&&&model = {}&&&&&# Gradient descent. For each batch...&&&&for i in xrange(0, num_passes):&&&&&&&&&# Forward propagation&&&&&&&&z1 = X.dot(W1) + b1&&&&&&&&a1 = np.tanh(z1)&&&&&&&&z2 = a1.dot(W2) + b2&&&&&&&&exp_scores = np.exp(z2)&&&&&&&&probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True)&&&&&&&&&# Backpropagation&&&&&&&&delta3 = probs&&&&&&&&delta3[range(num_examples), y] -= 1&&&&&&&&dW2 = (a1.T).dot(delta3)&&&&&&&&db2 = np.sum(delta3, axis=0, keepdims=True)&&&&&&&&delta2 = delta3.dot(W2.T) * (1 - np.power(a1, 2))&&&&&&&&dW1 = np.dot(X.T, delta2)&&&&&&&&db1 = np.sum(delta2, axis=0)&&&&&&&&&# Add regularization terms (b1 and b2 don't have regularization terms)&&&&&&&&dW2 += reg_lambda * W2&&&&&&&&dW1 += reg_lambda * W1&&&&&&&&&# Gradient descent parameter update&&&&&&&&W1 += -epsilon * dW1&&&&&&&&b1 += -epsilon * db1&&&&&&&&W2 += -epsilon * dW2&&&&&&&&b2 += -epsilon * db2&&&&&&&&&# Assign new parameters to the model&&&&&&&&model = { 'W1': W1, 'b1': b1, 'W2': W2, 'b2': b2}&&&&&&&&&# Optionally print the loss.&&&&&&&&# This is expensive because it uses the whole dataset, so we don't want to do it too often.&&&&&&&&if print_loss and i % 1000 == 0:&&&&&&&&&&print "Loss after iteration %i: %f" %(i, calculate_loss(model))&&&&&return model
隐藏层规模为3的神经网络
一起来看看假如我们训练了一个隐藏层规模为3的神经网络会发生什么。
# Build a model with a 3-dimensional hidden layer
model = build_model(3, print_loss=True)
# Plot the decision boundary
plot_decision_boundary(lambda x: predict(model, x))
plt.title("Decision Boundary for hidden layer size 3")
# Build a model with a 3-dimensional hidden layermodel = build_model(3, print_loss=True)&# Plot the decision boundaryplot_decision_boundary(lambda x: predict(model, x))plt.title("Decision Boundary for hidden layer size 3")
耶!这看起来结果相当不错。我们的神经网络能够找到成功区分类别的决策边界。
变换隐藏层的规模
在上述例子中,我们选择了隐藏层规模为3。现在来看看改变隐藏层规模会对结果造成怎样的影响。
plt.figure(figsize=(16, 32))
hidden_layer_dimensions = [1, 2, 3, 4, 5, 20, 50]
for i, nn_hdim in enumerate(hidden_layer_dimensions):
plt.subplot(5, 2, i+1)
plt.title('Hidden Layer size %d' % nn_hdim)
model = build_model(nn_hdim)
plot_decision_boundary(lambda x: predict(model, x))
plt.show()
plt.figure(figsize=(16, 32))hidden_layer_dimensions = [1, 2, 3, 4, 5, 20, 50]for i, nn_hdim in enumerate(hidden_layer_dimensions):&&&&plt.subplot(5, 2, i+1)&&&&plt.title('Hidden Layer size %d' % nn_hdim)&&&&model = build_model(nn_hdim)&&&&plot_decision_boundary(lambda x: predict(model, x))plt.show()
可以看到,低维隐藏层能够很好地捕捉到数据的总体趋势。更高的维度则更倾向于过拟合。它们更像是在“记忆”数据而不是拟合数据的大体形状。假如我们打算在独立测试集上评测该模型(你也应当这样做),隐藏层规模较小的模型会因为能更好的泛化而表现更好。虽然我们可以使用更强的泛化来抵消过拟合,但是为隐藏层选择一个合适的规模无疑是更加“经济”的方案。
这里有一些练习帮助你进一步熟悉这些代码:
使用minibatch梯度下降代替批量梯度下降来训练网络(信息)。minibatch梯度下降在实际中一般都会表现的更好。
例子中我们使用的是固定学习速率的梯度下降。请为梯度下降的学习速率实现一个退火算法(信息)。
这里我们使用的是tanh 作为隐藏层的激活函数。请尝试一下其他激活函数(比如上文中提到过的那些)。注意改变激活函数就意味着改变后向传播导数。
请扩展网络从两类输出到三类输出。你还需要为此产生一个近似数据集。
将这个网络扩展到四层。实验一下每层的规模。添加另一个隐藏层意味着前向传播和后向传播的代码都需要调整。
。如有疑问或反馈,请留在评论中。
关于作者:
可能感兴趣的话题
请问这plot_decision_boundary函数是哪个包下的??
o 248 回复
关于 Python 频道
Python频道分享 Python 开发技术、相关的行业动态。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2017 伯乐在线基于递归神经网络的广告点击率预估--《浙江理工大学》2016年硕士论文
基于递归神经网络的广告点击率预估
【摘要】:伴随着互联网而生的在线广告,在过去几十年里,得到飞速发展。广告点击率作为计算广告的重要研究内容,越来越受到人们的关注。借助机器学习,根据历史数据预估广告点击率是目前的主要方法,凭借准确的广告点击率预估可以使广告投放得更加精准,提高真实的点击率,增加收益。虽然使用线性模型可以简单地预估广告点击率,但是线性模型的学习能力有限,对于越来越多的数据特征,无法更有效得学习,而且在学习的过程中容易出现过度拟合的情况,影响模型对特征的学习。基于神经网络算法的模型采用非线性激励函数以及多层节点结构可以更好得学习大量非线性特征之间复杂的关系,从而提高模型的预估能力。其中,递归神经网络是一种网络中存在环结构、能存储神经元前一时刻的输出并且具有较强的优化计算能力的神经网络。本文主要工作包括以下三个方面:(1)本文针对不同的模型进行相应的特征处理,逻辑回归模型采用拼接显性特征组合提取隐藏用户属性,再通过哈希映射,将原来不同类型的特征值转换成相同类型的特征值。随机森林模型采用建立特征字典,过滤频次过低的样本数,然后进行one-hot编码去处理特征。基于神经网络的模型,本文采用首先计算特征的频次,并建立特征频次字典,将字符型特征转变成整型特征,然后将转化后的特征进行离差标准化,使每个特征的特征值范围在[0,1]之间。(2)递归神经网络虽然已经应用于广告点击率的预估,但是递归神经网络模型采用梯度下降,在趋近最小值时,可能会出现梯度爆发或消失,从而影响预估效果。本文采用基于LSTM(long short term memory)改进的递归神经网络预估广告点击率,利用LSTM去修正RNN,来防止梯度的爆发或消失。实验结果表明基于LSTM改进的递归神经网络模型在预估广告点击率方面取得了较好的效果。(3)本文采用python语言编写逻辑回归模型,随机森林模型、BP(Back Propagation)神经网络模型、递归神经网络模型和基于LSTM(Area Under roc Curve)改进的递归神经网络模型。并分别采用sigmoid函数和ReLu函数来训练递归神经网络,实验证明ReLu函数收敛得更快,模型预估的效果更好。模型评估方法采用logloss方法,与AUC相比logloss更能反映模型预估广告点击率的准确性。
【关键词】:
【学位授予单位】:浙江理工大学【学位级别】:硕士【学位授予年份】:2016【分类号】:F713.8;TP183【目录】:
摘要4-5ABSTRACT5-9第一章 绪论9-16 1.1 研究背景9-10 1.2 研究现状10-11 1.3 主要研究内容11-14
1.3.1 数据处理12-13
1.3.2 模型训练13-14
1.3.3 模型评估14 1.4 本文章节的安排14-16第二章 广告点击率预估的相关知识16-33 2.1 广告计算学的相关知识16-20
2.1.1 计算广告学16
2.1.2 在线广告投放系统的整体流程16-17
2.1.3 在线广告的计费模式、定价策略和投放方式17-20 2.2 激励函数20-22
2.2.1 sigmoid函数20-21
2.2.2 tanh函数21
2.2.3 ReLu(Rectified Linear Units)函数21-22 2.3 机器学习知识22-25
2.3.1 逻辑回归模型22-23
2.3.2 随机森林模型23-24
2.3.3 神经网络模型24-25 2.4 目标函数优化方法25-27
2.4.1 梯度下降法25-26
2.4.2 拉格朗日法和凸优化26
2.4.3 拟牛顿法26-27 2.5 特征降维技术27-29
2.5.1 主成分析法Principal Components Analysis,PCA)27
2.5.2 核主成分析法(Kernel Principal Components Analysis,KPCA)27-28
2.5.3 哈希法28-29 2.6 评价算法的知识29-30
2.6.1 AUC评估指标29-30
2.6.2 logloss评估指标30 2.7 数据标准化30-32
2.7.1 Max-Min标准化30-31
2.7.2 Z-score标准化31
2.7.3 atan函数标准化31
2.7.4 Log函数标准化31-32 2.8 本章小结32-33第三章 基于递归神经网络的广告点击率预估模型33-46 3.1 BP神经网络模型33-36
3.1.1 模型的定义和网络结构33-34
3.1.2 模型的训练34-36 3.2 递归神经网络的模型36-40
3.2.1 模型的定义和网络结构36-38
3.2.2 模型的训练38-40 3.3 基于LSTM改进的递归神经网络模型40-45
3.3.1 模型的定义和网络结构40
3.3.2 模型的训练40-45 3.4 本章小结45-46第四章 广告点击率模型实验设计46-56 4.1 数据分析46-48 4.2 逻辑回归模型的实验设计48-50
4.2.1 特征设计48-50
4.2.2 特征处理50
4.2.3 模型训练50 4.3 随机森林模型的实验设计50-52
4.3.1 特征设计和处理50-51
4.3.2 随机森林模型预估流程51-52 4.4 基于神经网络模型的实验设计52-55
4.4.1 基于神经网络模型的特征处理52
4.4.2 基于神经网络模型的广告点击率预估流程52-55 4.5 本章小结55-56第五章 实验结果分析56-62 5.1 实验条件和工具使用56 5.2 逻辑回归模型的实验结果和分析56-57 5.3 随机森林模型的实验结果和分析57 5.4 BP神经网络模型的实验结果和分析57-58 5.5 递归神经网络模型的实验结果和分析58-59 5.6 对比各模型的实验结果并分析59-61 5.7 本章小结61-62第六章 总结和展望62-64 6.1 文章总结62-63 6.2 展望和未来的工作63-64参考文献64-68致谢68-69攻读学位期间的研究成果69
欢迎:、、)
支持CAJ、PDF文件格式
【相似文献】
中国期刊全文数据库
金仁贵;;[J];电脑知识与技术;2006年29期
陈钢;王占山;;[J];沈阳理工大学学报;2007年02期
汪晓梦;;[J];甘肃联合大学学报(自然科学版);2010年05期
杜艳可;徐瑞;;[J];北华大学学报(自然科学版);2012年01期
蒋洪睿,莫玮,李丽;[J];电讯技术;2000年01期
宋轶民,余跃庆,张策,马文贵;[J];机械科学与技术;2001年04期
张奇志,贾永乐,周雅莉;[J];控制与决策;2001年03期
李峰,李树荣;[J];石油大学学报(自然科学版);2001年03期
唐普英,李绍荣,黄顺吉;[J];信号处理;2001年06期
文敦伟,蔡自兴;[J];高技术通讯;2002年01期
中国重要会议论文全文数据库
房毅宪;王宝文;王永茂;;[A];计算机技术与应用进展——全国第17届计算机科学与技术应用(CACIS)学术会议论文集(上册)[C];2006年
刘勇;沈毅;胡恒章;;[A];1998年中国智能自动化学术会议论文集(上册)[C];1998年
赵英凯;蔡宁;;[A];1998年中国智能自动化学术会议论文集(上册)[C];1998年
李树荣;李峰;;[A];1998年中国控制会议论文集[C];1998年
史志伟;韩敏;;[A];第二十三届中国控制会议论文集(下册)[C];2004年
丛爽;戴谊;;[A];'2006系统仿真技术及其应用学术交流会论文集[C];2006年
吕进;郭晨;刘雨;;[A];2007年中国智能自动化会议论文集[C];2007年
蒲兴成;;[A];2008’“先进集成技术”院士论坛暨第二届仪表、自动化与先进集成技术大会论文集[C];2008年
仉宝玉;吴志敏;;[A];'2003系统仿真技术及其应用学术交流会论文集[C];2003年
沈艳;谢美萍;;[A];第二届全国信息获取与处理学术会议论文集[C];2004年
中国博士学位论文全文数据库
赵永昌;[D];中国海洋大学;2010年
高海宾;[D];燕山大学;2006年
黄玉娇;[D];东北大学;2014年
徐东坡;[D];大连理工大学;2009年
于佳丽;[D];电子科技大学;2009年
王芬;[D];武汉科技大学;2011年
季策;[D];东北大学;2005年
徐军;[D];浙江大学;2007年
张锐;[D];东北大学;2010年
张益军;[D];东华大学;2008年
中国硕士学位论文全文数据库
柳玉华;[D];江西理工大学;2015年
罗威威;[D];中国矿业大学;2015年
杨渺渺;[D];电子科技大学;2015年
崔志超;[D];河北科技大学;2015年
余仕敏;[D];浙江理工大学;2016年
葛洋;[D];曲阜师范大学;2010年
张欣;[D];太原理工大学;2005年
曾智;[D];重庆大学;2006年
张玲玲;[D];湖南大学;2007年
刘博瑞;[D];中国海洋大学;2010年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 大众知识服务
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备75号

我要回帖

更多关于 log loss 的文章

 

随机推荐