softmax

Softmax回归

吃可爱长大的小学妹 提交于 2020-03-14 18:47:49
Softmax回归 1. softmax回归模型   softmax回归模型是logistic回归模型在多分类问题上的扩展(logistic回归解决的是二分类问题)。   对于训练集 ,有 。   对于给定的测试输入 ,我们相拥假设函数针对每一个类别j估算出概率值 。也就是说,我们估计 得每一种分类结果出现的概率。因此我们的假设函数将要输入一个 维的向量来表示这 个估计得概率值。假设函数 形式如下:   其中 是模型的参数。 这一项对概率分布进行归一化,舍得所有概率之和为1.   softmax回归的代价函数:   上述公式是logistic回归代价函数的推广。logistic回归代价函数可以改为:   可以看到,softmax代价函数与logistic代价函数在形式上非常类似,只是在softmax损失函数中对类标记的 个可能值进行了累加。注意在softmax回归中将 分类为 的概率为: 有了上面的偏导数公式以后,我们就可以将它代入到梯度下降法等算法中,来最小化 。 例如,在梯度下降法的标准实现中,每一次迭代需要进行如下更新: 2. 权重衰减 在实际应用中,为了使算法实现更简单清楚,往往保留所有参数 ,而不任意地将某一参数设置为 0。但此时我们需要对代价函数做一个改动:加入权重衰减。权重衰减可以解决 softmax 回归的参数冗余所带来的数值问题。 我们通过添加一个权重衰减项

【UFLDL】Exercise: Convolutional Neural Network

梦想的初衷 提交于 2020-03-10 18:12:48
这个exercise需要完成cnn中的forward pass,cost,error和gradient的计算。需要弄清楚每一层的以上四个步骤的原理,并且要充分利用matlab的矩阵运算。大概把过程总结了一下如下图所示: STEP 1:Implement CNN Objective STEP 1a: Forward Propagation Forward Propagation主要是为了计算输入图片经过神经网络后的输出,这个网络有三层:convolution->pooling->softmax(dense connected),卷积层对于每个图像用所有的模板进行卷积;pooling层对卷积层输出的feature map采样;softmax层根据pooling层输出的feature预测图像的分类结果。其中convolution和pooling操作在 之前 就实现过了。具体的过程可以参见上图中Forward Pass中每层的具体操作。代码如下: %%% YOUR CODE HERE %%% %调用之前已经实现的函数 activations = cnnConvolve(filterDim, numFilters, images, Wc, bc);%sigmoid(wx+b) activationsPooled = cnnPool(poolDim, activations); %

机器学习代码实战——数值计算

瘦欲@ 提交于 2020-03-09 15:58:36
文章目录 1.上溢和下溢 2.优化方法 1.上溢和下溢 下溢(Underflow):当接近零的数被四舍五入为零时发生下溢。 上溢(Overflow):当大量级的数被近似为 ∞ 或 −∞ 时发生上溢。 必须对上溢和下溢进行数值稳定的一个例子是 softmax 函数。softmax 函数经常用于预测与范畴分布相关联的概率,定义为: import numpy as np x = np . array ( [ 1e7 , 1e8 , 2e5 , 2e7 ] ) y = np . exp ( x ) / sum ( np . exp ( x ) ) print ( "上溢:" , y ) x = x - np . max ( x ) # 减去最大值 y = np . exp ( x ) / sum ( np . exp ( x ) ) print ( "上溢处理:" , y ) import numpy as np x = np . array ( [ - 1e10 , - 1e9 , - 2e10 , - 1e10 ] ) y = np . exp ( x ) / sum ( np . exp ( x ) ) print ( "下溢:" , y ) x = x - np . max ( x ) y = np . exp ( x ) / sum ( np . exp ( x ) )

人脸识别系列(十二):Center Loss

这一生的挚爱 提交于 2020-03-06 03:29:36
论文链接: A Discriminative Feature Learning Approach for Deep Face Recognition (需翻墙) 代码链接: https://github.com/ydwen/caffe-face 一个小实验 作者为了说明Softmax损失函数对特征分布的影响,在Minist上做了一个小的实验,使用了一个比LeNets更深的网络结构LeNets++(如下图)。 LeNets++把网络全连接层的数量调至2,这样就可以得到一个二维的特征输出,以此对全连接层的特征进行可视化 试验结果 : 不同颜色代表不同类,从上图可以看出,Softmax函数学习到的特征仍然有很大的类内差距,为了解决这一问题,center loss应运而生。 center loss Cyi表示属于yi类的特征的的中心 这样做是存在问题的 : 理想情况下,我们每次更新权值都要遍历全部的训练集去获得每个类的中心,这是低效甚至不实际的 为了解决这个问题,作者使用了minbatch中的每个类的中心来更新,(虽然这样可能有些类的中心在一次迭代中无法更新到): 总损失函数使用的是Softmax+center Loss联合损失: 求导: 算法流程类似一般的卷积神经网络,就是多了一个更新中心点的流程 效果: 人脸识别实验 参数: 三组对比实验: model A :softmax loss

使用多块GPU进行训练 1.slim.arg_scope(对于同等类型使用相同操作) 2.tf.name_scope(定义名字的范围) 3.tf.get_variable_scope().reuse_variable(参数的复用) 4.tf.py_func(构造函数)

拜拜、爱过 提交于 2020-03-06 00:10:00
1. slim.arg_scope(函数, 传参) # 对于同类的函数操作,都传入相同的参数 from tensorflow.contrib import slim as slim import tensorflow as tf @slim.add_arg_scope # 进行修饰操作 def fun1(a=0, b=0): return a + b with slim.arg_scope([fun1], a=2): x = fun1(b=2) print(x)# 4 2. tf.name_scope('tower') 对范围内的操作都添加上该操作名 import tensorflow as tf with tf.name_scope('tower'): op = tf.constant(1) print(op.name) with tf.name_scope('tower_1'): op = tf.constant(1) print(op.name)# tower/Const:0# tower_1/Const:0 3. tf.get_variable_scope.reuse_variable() 对于相同的操作传入使用同一个网络结构,不需要再创建新值 import tensorflow as tf import vgg inputs_1 = tf.random_normal(

CS231n assignment1笔记

谁说胖子不能爱 提交于 2020-03-02 13:12:41
KNN no_loop计算dists矩阵: 参考 KNN中no-loop矩阵乘法代码 损失函数 Numpy中ndim、shape、dtype、astype的用法 Python numpy函数:hstack()、vstack()、stack()、dstack()、vsplit()、concatenate() SVM for i in range ( num_train ) : scores = X [ i ] . dot ( W ) #第i个训练集在10个维度上的数值 correct_score = scores [ y [ i ] ] #真实数值 for j in range ( num_att ) : if j == y [ i ] : continue margin = scores [ j ] - correct_score + 1 # note delta = 1 if margin > 0 : #如果差距>1则计入误差 loss += margin dW [ : , j ] += X [ i ] . T ##通过求导得到 dW [ : , y [ i ] ] += - X [ i ] . T 这里的优化参见下图 cs231n官方笔记 Softmax 分子常常较大,在分式的分子和分母都乘以一个常数 C 通常将 C 设为 log C = − max ⁡ j f j

“万物皆可embedding”

半腔热情 提交于 2020-03-01 18:33:49
不知道大家有没有这种感受,在学习推荐系统算法模型时,少不了embedding的应用,有的推荐算法模型甚至可以说就是在做embedding的过程,可见embedding在推荐系统中的重要性。 这篇文章就专门把embedding单独提出来,梳理一下embedding在推荐系统中的应用。以下内容主要从深度学习方法和传统的协同过滤方法两个方面加深和理解在推荐系统领域对embedding的认识,感受下“embedding”这一重要思想。 深度学习方法 先拿一篇推荐系统领域中最为经典的论文之一“Deep Neural Networks for YouTubeRecommendations”来讲,Youtube的这篇视频推荐模型框架基本上奠定了后面推荐系统的主要步骤:召回和排序,如下图所示: 其中召回阶段(candidate generation)就是要从推荐的百万级别的视频库中筛选出用户可能感兴趣的视频,把推荐的视频库量级从百万级降到几百个。但是到底怎样才能快速高效的完成筛选呢? 要知道youtube是非常活跃的视频网站,每秒同时访问的人数成千上万,要同时实现每秒对每个用户都个性化的从百万视频候选集中挑出几百个用户感兴趣的视频,想想都不容易,因此每次做用户召回都跑一遍模型是不可能的,其解决方法就和接下来要介绍的embedding应用相关。如下图 1 所示为youtube召回阶段的模型: ▲

成功解决return tf.nn.softmax(x, axis=axis) TypeError: softmax() got an unexpected keyword argument 'axis

試著忘記壹切 提交于 2020-03-01 11:07:54
成功解决return tf.nn.softmax(x, axis=axis) TypeError: softmax() got an unexpected keyword argument 'axis 解决问题 return tf.nn.softmax(x, axis=axis) TypeError: softmax() got an unexpected keyword argument 'axis' 解决方法 修改keras得源文件 来源: CSDN 作者: 一个处女座的程序猿 链接: https://blog.csdn.net/qq_41185868/article/details/80897048

多分类器:KNN,SVM,Softmax,2-Layer-Affine-Net(以图像分类为例子)

时光怂恿深爱的人放手 提交于 2020-03-01 09:21:59
多分类器:KNN,SVM,Softmax,2-Layer-Affine-Net(以图像分类为例子) 记录一下 CS 231N 计算机视觉这门课所提到的一些基础分类器,结合机器学习中学到的二元分类器算法,并以 CIFAR 10 作为训练集测试多分类器性能。 KNN K近邻分类 主要思路:寻找训练集到测试集中最相似的 k k k 个图像(距离由矩阵二范数、或是 F r o b i n u s Frobinus F r o b i n u s 范数表示),并由 k k k 个最优结果投票决定其标签。 算法流程: 训练集导入 X X X 与标签 y y y 测试集输入 x ^ \hat x x ^ ,找到 X X X 中与 x ^ \hat x x ^ 距离最近的 k k k 个图像: χ = { X ~ 1 , ⋯   , X ~ k } \chi = \{\tilde X_1,\cdots, \tilde X_k\} χ = { X ~ 1 ​ , ⋯ , X ~ k ​ } (一般用二范数距离) 对标签进行计数: η = { ( X ~ 1 , y ~ ( 1 ) ) , ⋯   , ( X ~ k , y ~ ( p ) ) } \eta = \{(\tilde X_1, \tilde y^{(1)}),\cdots, (\tilde X_k, \tilde y^{(p)})\}

TASK04-注意力机制-机器翻译-Transformer

人盡茶涼 提交于 2020-02-18 05:05:08
将注意力机制放到这里,以后会用到。 练习题放在最前面: 关于Transformer描述正确的是: 在训练和预测过程中,解码器部分均只需进行一次前向传播。 Transformer 内部的注意力模块均为自注意力模块。 解码器部分在预测过程中需要使用 Attention Mask。 自注意力模块理论上可以捕捉任意距离的依赖关系。 答案解释 选项1:训练过程1次,预测过程要进行句子长度次 选项2:Decoder 部分的第二个注意力层不是自注意力,key-value来自编码器而query来自解码器 选项3:不需要 选项4:正确,因为自注意力会计算句子内任意两个位置的注意力权重 2. 在Transformer模型中,注意力头数为h,嵌入向量和隐藏状态维度均为d,那么一个多头注意力层所含的参数量是: 4hd24hd^24hd2 (3h+1)d2(3h + 1)d^2(3h+1)d2 4d24d^24d2 3hd23hd^23hd2 答案解释 参考MultiHeadAttention模块的定义。 hhh个注意力头中,每个的参数量为3d23d^23d2,最后的输出层形状为hd×dhd \times dhd×d,所以参数量共为4hd24hd^24hd2。 3. 下列对于层归一化叙述错误的是: 层归一化有利于加快收敛,减少训练时间成本 层归一化对一个中间层的所有神经元进行归一化