entropy

PaddlePaddle/PLSC

假装没事ソ 提交于 2020-04-16 11:21:14
【推荐阅读】微服务还能火多久?>>> PLSC: 飞桨大规模分类库 简介 深度学习中用于解决多分类问题的深度神经网络的最后一层通常是全连接层和Softmax的组合层,并采用交叉熵(Cross-Entropy)算法计算神经网络的损失函数。由于全连接层的参数量随着分类类别数的增长线性增长,当分类类别数相当大时,神经网络的训练会面临下面两个主要挑战: 参数量过大,超出单个GPU卡的显存容量:假设分类网络最后一层隐层的输出维度为512,那么当分类类别数为一百万时,最后一层全连接层参数的大小约为2GB(假设以32比特浮点数表示参数)。当分类问题的类别数为一亿时(例如,对自然界中的生物进行分类),则最后一层全连接层参数的大小接近200GB,远远超过当前GPU的显存容量。 参数量较大,同步训练方式下通信开销较大:数据并行训练方式下,所有GPU卡之间需要同步参数的梯度信息,以完成参数值的同步更新。当参数数量较大时,参数的梯度信息数据量同样较大,从而导致参数梯度信息的通信开销较大,影响训练速度。 飞桨大规模分类(PLSC: P addlePaddle L arge S cale C lassification)库是基于 飞桨平台 构建的超大规模分类库,为用户提供从训练到部署的大规模分类问题全流程解决方案。 PLSC特性 支持超大规模分类:单机8张V100 GPU配置下支持的最大类别数扩大2.52倍

《Python数据分析与机器学习实战-唐宇迪》读书笔记第19章--卷积神经网络

倾然丶 夕夏残阳落幕 提交于 2020-04-15 13:02:36
【推荐阅读】微服务还能火多久?>>> python数据分析个人学习读书笔记-目录索引 19章卷积神经网络   本章介绍现阶段神经网络中非常火的模型——卷积神经网络,它在计算机视觉中有着非常不错的效果。不仅如此,卷积神经网络在非图像数据中也有着不错的表现,各项任务都有用武之地,可谓在机器学习领域遍地开花。那么什么是卷积呢?网络的核心就在于此,本章将带大家一步步揭开卷积神经网络的奥秘。 19.1卷积操作原理   卷积神经网络也是神经网络的一种,本质上来说都是对数据进行特征提取,只不过在图像数据中效果更好,整体的网络模型架构都是一样的,参数迭代更新也是类似,所以难度就在于卷积上,只需把它弄懂即可。 19.1.1卷积神经网络应用   卷积神经网络既然这么火爆,肯定能完成一些实际任务,先来看一下它都能做什么。   图19-1是经典的图像分类任务,但是神经网络也能完成这个任务,那么,为什么说卷积神经网络在计算机视觉领域更胜一筹呢?想想之前遇到的问题,神经网络的矩阵计算方式所需参数过于庞大,一方面使得迭代速度很慢,另一方面过拟合问题比较严重,而卷积神经网络便可以更好地处理这个问题。   图19-1 图像分类任务   图19-2是检测任务的示例,不仅需要找到物体的位置,还要区分物体属于哪个类别,也就是回归和分类任务结合在一起。现阶段物体检测任务随处可见,当下比较火的无人驾驶也需要各种检测任务。  

常见的距离算法和相似度(相关系数)计算方法

泄露秘密 提交于 2020-04-14 20:56:09
【推荐阅读】微服务还能火多久?>>> 摘要: 1.常见的距离算法 1.1欧几里得距离(Euclidean Distance)以及欧式距离的标准化(Standardized Euclidean distance) 1.2马哈拉诺比斯距离(Mahalanobis Distance) 1.3 曼哈顿 距离(Manhattan Distance) 1.4切比雪夫距离(Chebyshev Distance) 1.5明可夫斯基距离(Minkowski Distance) 1.6海明距离(Hamming distance) 2.常见的相似度(系数)算法 2.1余弦相似度(Cosine Similarity)以及调整余弦相似度(Adjusted Cosine Similarity) 2.2皮尔森相关系数(Pearson Correlation Coefficient) 2.3Jaccard相似系数(Jaccard Coefficient) 2.4Tanimoto系数(广义Jaccard相似系数) 2.5对数似然相似度/对数似然相似率 2.6互信息/信息增益,相对熵/KL散度 2.7信息检索--词频-逆文档频率(TF-IDF) 2.8词对相似度--点间互信息 3.距离算法与相似度算法的选择(对比) 内容: 1.常见的距离算法 1.1欧几里得距离(Euclidean Distance) 公式:

通俗讲解决策树:如何利用有效特征进行决策分类?

一世执手 提交于 2020-04-12 19:21:00
决策树 (Decision Tree) 是一种有监督学习方法,通过特征和标签构造一棵决策树,学习特征之间的规则,以解决分类和回归问题。 使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。 决策树由以下 3 种元素构成: 根节点:包含样本全集 内部节点:对应特征属性测试 叶节点:决策结果 (标签) 决策树如何辨别好瓜和坏瓜? (此图摘自周志华西瓜书,本人白板手绘版) 以上面的西瓜为例,我们要如何辨别一个瓜是好瓜。特点是:纹理清晰,根蒂稍蜷,触感青绿,恰好,你构建了一棵决策树,立马判断这是好瓜还是坏瓜? 判断步骤如下: 根据纹理清晰,已知是清晰,那么向左边走,看第一步 接着,由纹理清晰到达第 2 层,由决策树图,我们可以看到,根蒂是稍蜷 接着到第 3 层,色泽的特征的青绿,由此,我们可以得出结论,这是一个好瓜。 根据上面的示例,我们可以很直观的得到一个实例的类别判断,只要告诉各个特征的具体值,决策树的判定过程就相当于从树中从根节点到某一个叶子节点的遍历。每一步如何遍历是由数据各个特征的具体特征属性决定。 那么,基于上面的一棵树,我们又有如下疑问,为什么根节点是纹理,而不是根蒂或者别的特征呢? 决策树又是基于什么标准来选择特征的?如果构建决策树? 决策树学习的 3 个步骤 基于上面的问题

AAAI 2020 | 反向R?削弱显著特征为细粒度分类带来提升

孤街浪徒 提交于 2020-03-27 11:35:09
3 月,跳不动了?>>> > 论文提出了类似于dropout作用的diversification block,通过抑制特征图的高响应区域来反向提高模型的特征提取能力,在损失函数方面,提出专注于top-k类别的gradient-boosting loss来优化训练过程,模型在ResNet-50上提升3.2%,算法思路巧妙,结构易移植且效果也不错,值得学习 论文:Fine-grained Recognition: Accounting for Subtle Differences between Similar Classes 论文地址: https://arxiv.org/abs/1912.06842 Introduction   在FGVC(fine-grained visual categorization)上,一般的深度学习模型都是通过学习输入图片到输出标签的映射,这样会导致模型倾向于专注少部分显著区域来同时区分模糊的种群内(inter-class)相似性和种群间(intra-class)的变化   如图1所示,一般的深度学习模型的attention经常密集地集中在小部分区域,因此只会提出有限的特征。因此,论文建议分散attention来构建多样的分布在特征图上的特征。因为在特征层面进行attention分散,在预测时则需要反过来,例如只关注最相似的类别来提高模型的辨别能力

最近学习相关序列模型的一点记录

女生的网名这么多〃 提交于 2020-03-27 10:09:33
3 月,跳不动了?>>> 之前看了一个用rnn作诗、写文章比较典型的例子: https://github.com/hzy46/Char-RNN-TensorFlow 其训练过程: 假设batchsize=2,序列长度为5,原文章:12345642985718041937... 输入x:[[1 2 3 4 5],[6 4 2 9 8]],尺寸2x5 输出y:[[2 3 4 5 1],[4 2 9 8 6]],尺寸2x5, 后一个字是前一个字的输出,最后一个字的输出用第一个字替换(也可以用结束符) 分别one-hot表示: x:[[0100000000, 00100..., 00010..., 000010...., 000001....],[..., ..., ..., ..., ...]] ,尺寸2 x 5 x n_class y:[[00100...., 00010..., 000010...., 000001....,0100000000],[..., ..., ..., ..., ...]],尺寸2 x 5 x n_class 输入x到RNN: x_out, x_state = RNN(x), x_out:(分别对应序列中每个字符的输出),尺寸:2 x 5 x h_size x_state:(序列最后状态向量),尺寸:2 x h_size 增加输出层: logits = tf

目标检测 | RetinaNet:Focal Loss for Dense Object Detection

拜拜、爱过 提交于 2020-03-26 18:43:20
3 月,跳不动了?>>> > 论文分析了one-stage网络训练存在的类别不平衡问题,提出能根据loss大小自动调节权重的focal loss,使得模型的训练更专注于困难样本。同时,基于FPN设计了RetinaNet,在精度和速度上都有不俗的表现 论文:Focal Loss for Dense Object Detection 论文地址: https://arxiv.org/abs/1708.02002 论文代码: https://github.com/facebookresearch/Detectron Introduction   目前state-of-the-art的目标检测算法大都是two-stage、proposal-driven的网络,如R-CNN架构。而one-stage检测器一直以速度为特色,在精度上始终不及two-stage检测器。因此,论文希望研究出一个精度能与two-stage检测器媲美的one-stage检测器 通过分析, 论文认为阻碍one-stage精度主要障碍是类别不平衡问题(class imbalance) : 在R-CNN架构检测器中,通过two-stage级联和抽样探索法(sampling heuristics)来解决类别不平衡问题。proposal阶段能迅速地将bndbox的数量缩小到很小的范围(1-2k),过滤了大部分背景。而第二阶段

哈佛NLP组论文解读:基于隐变量的注意力模型 | 附开源代码

夙愿已清 提交于 2020-03-24 07:36:02
3 月,跳不动了?>>> 摘要 Attention 注意力模型在神经网络中被广泛应用。在已有的工作中,Attention 机制一般是决定性的而非随机变量。 我们提出了将 Attention 建模成隐变量,并应用 VAE 和 policy gradient 训练模型 。在不使用 KL annealing 等 trick 的情况下训练,在 IWSLT 14 German-English 上建立了新的 state-of-the-art。 ■ 论文 | Latent Alignment and Variational Attention ■ 链接 | https://www.paperweekly.site/papers/2120 ■ 源码 | https://github.com/harvardnlp/var-attn 背景 近年来很多文章将 VAE 应用到文本生成上,通过引入隐变量对文本中的一些不确定性(diversity,如文章风格主题、蕴含情感等)进行建模。 这样做往往会遇到一个常见的问题—— KL collapsing 。这个问题最早在 16 年时由 Bowman 指出 [1],其描述的现象是直接训练 VAE 得到的 KL 接近 0——这也就意味着近似后验和先验一样,使得隐变量被模型忽略 [5]。 Bowman 的解决办法是使用 KL annealing [1](KL 项的权重从

Python+Android进行TensorFlow开发

蓝咒 提交于 2020-03-23 22:48:48
3 月,跳不动了?>>> Tensorflow是Google开源的一套机器学习框架,支持GPU、CPU、Android等多种计算平台。本文将介绍在Tensorflow在Android上的使用。 Android使用Tensorflow框架需要引入两个文件libtensorflow_inference.so、libandroid_tensorflow_inference_java.jar。这两个文件可以使用官方预编译的文件。如果预编译的so不满足要求(比如不支持训练模型中的某些操作符运算),也可以自己通过bazel编译生成这两个文件。 将libandroid_tensorflow_inference_java.jar放在app下的libs目录下,so文件命名为libtensorflow_jni.so放在src/main/jniLibs目录下对应的ABI文件夹下。目录结构如下: Android目录结构 同时在app的build.gradle中的dependencies模块下添加如下配置: dependencies { ... compile files( 'libs/libandroid_tensorflow_inference_java.jar' ) ... } 12345 复制代码 使用tensorflow框架进行机器学习分为四个步骤: 构造神经网络 训练神经网络模型

Python+Android进行TensorFlow开发

眉间皱痕 提交于 2020-03-21 01:08:09
3 月,跳不动了?>>> Tensorflow是Google开源的一套机器学习框架,支持GPU、CPU、Android等多种计算平台。本文将介绍在Tensorflow在Android上的使用。 Android使用Tensorflow框架需要引入两个文件libtensorflow_inference.so、libandroid_tensorflow_inference_java.jar。这两个文件可以使用官方预编译的文件。如果预编译的so不满足要求(比如不支持训练模型中的某些操作符运算),也可以自己通过bazel编译生成这两个文件。 将libandroid_tensorflow_inference_java.jar放在app下的libs目录下,so文件命名为libtensorflow_jni.so放在src/main/jniLibs目录下对应的ABI文件夹下。目录结构如下: Android目录结构 同时在app的build.gradle中的dependencies模块下添加如下配置: dependencies { ... compile files( 'libs/libandroid_tensorflow_inference_java.jar' ) ... } 12345 复制代码 使用tensorflow框架进行机器学习分为四个步骤: 构造神经网络 训练神经网络模型