神经网络
文章平均质量分 69
ybdesire
Talk is cheap. Show me the code.
展开
-
从头训练GPT2-124M过程中从wandb看到的参数含义
MFU(Model FLOPs Utilization)表示模型算力利用率...原创 2024-09-04 21:50:47 · 272 阅读 · 0 评论 -
用gurobipy求解带不等式约束条件的优化问题
python用gurobipy求解带不等式约束条件的优化问题的具体实现代码。原创 2024-08-10 23:00:00 · 660 阅读 · 0 评论 -
详解混合类型文件(Polyglot文件)的应用生成与检测
本文总结了混合类型文件的定义,使用混合类型的恶意样本家族,如何生成混合类型文件,以及非混合类型的文件检测及混合类型文件检测的方法。原创 2023-09-16 22:03:05 · 558 阅读 · 0 评论 -
F1,AUC的区别与选择
1. 引入评价一个分类器模型的效果,可以用交叉验证,也可以根据场景将数据切分为训练集、测试集,评价指标有Accuracy,F1-Value,AUC等。那我们该如何选择评价指标呢?不同场景下选择哪个指标更合理呢?2. 原理区别Accuracy准确率准确率高的模型,不一定是好模型比如癌症预测,100个人中只有一个病人,若分类器都输出0,准确率为99%,但我们都知道这无法找到任何一个癌症病人所以大部分场景,都不能直接根据Accuracy来评价模型F1-Value综合考虑了Prec原创 2021-10-06 23:14:37 · 3991 阅读 · 0 评论 -
从keras中SGD源码理解基于时间的学习速率衰减decay策略
1. 引入在求解神经网络优化问题中,学习速率不应该是固定不变的。最好的学习速率,应该在训练开始时偏大,这样能加快训练速度,并在训练过程中逐步减小,这样能更好的逼近最优点。所以,在参考1中,我们知道了有SGD, Adam, Adadelta 等这些非常经典的优化算法。2. decay从参考2的中,我们能看到如何调节SGD, Adam等优化器的参数。同时我们也发现了一个参数叫做decay,它表示学习速率的衰减值。decay可以用于SGD, Adam, RMSprop, Adagrad, Adadel原创 2021-07-22 23:15:57 · 1336 阅读 · 1 评论 -
详解如何获取深度学习模型中间层的输出值
1. 引入深度学习模型,大都是多层的网络,各个层可能各有不同(Dense, Dropout, Flatten, Activation, BatchNormalization, GlobalAveragePooling2D,Conv2D, MaxPooling2D, ZeroPadding2D,LSTM)。有时候我们需要获取多层网络中某一层的输出值,用于做可视化,或者Embedding。下面就以一个例子为例说明如何获取神经网络某一层的输出值。2. 构建网络,各层加上name本文构建的多层网络模型如下原创 2021-03-26 23:07:14 · 7648 阅读 · 4 评论 -
使用keras.layers.Reshape实现不同维度任意层之间的对接
1. 引入keras提供了很多不同的layer给我们使用,常用的比如Dense, Dropout, Flatten, Activation, BatchNormalization, GlobalAveragePooling2D,Conv2D, MaxPooling2D, ZeroPadding2D,LSTM等等。我们使用这些layer,像搭积木一样逐层链接,就能实现深度学习模型。但是,keras提供的layer都是传统的layer。有一些比较新的layer,keras是不能那么快提供给我们用的。所以一些原创 2021-02-18 23:31:59 · 13071 阅读 · 2 评论 -
Seq2Seq模型中的集束搜索(Beam Search)
1. 引入用Seq2Seq模型开发翻译系统时,假设输入一句法语,输出英文。在Decoder输出部分,选择不同的单词,输出(翻译)的结果也会不同。这里用下图来举例说明:一个法语句子,被Seq2Seq模型翻译为不同的4句英文,我们该选择哪个结果作为最终结果呢?上图中,给了一个公式,式中的x表示法语句子,y表示各个单词组成的最终的英文句子,不同的y的组合表示不同的翻译,即y1~yn表示单词序列。解决这个问题的关键,就在于找到合适的y值,使得图中的公式值最大化。但是具体怎么做呢?下面我们介绍一种方法原创 2021-01-23 23:13:43 · 503 阅读 · 0 评论 -
详细解读Google论文:Google在Malware Hunting领域的新成果
引入最近仔细通读了Google最新的paper,《Spotlight: Malware Lead Generation at Scale》,这是Google在2020年12月份发表在Annual Computer Security Applications Conference (ACSAC) 会议上的论文。ACSAC是计算机安全领域的很好的会议,看到有的分析说是计算机安全排第二梯队的顶会。这是个比较有个性的会议,它上面的论文和学术界的其他会议区别很大。这里论文都是以应用为主的,文章内容注重实践性、工程原创 2021-01-01 23:11:25 · 496 阅读 · 0 评论 -
大规模向量相似度检索方案
1. 引入有很多指标可以用来衡量向量的相似度,比如余弦距离、汉明距离、欧氏距离等。在图像、视频、文本、音频领域,做向量的相似性搜索,有很多应用点,比如:图像识别,语音识别、垃圾邮件过滤。这种基于相似度检索的方案,不同于机器学习模型的方案。比如用有监督学习模型来做人脸识别,模型的可解释性较低,而基于相似度搜索来做人脸识别,可解释性就更高。但是,当数据量很大,比如几千万张图片,要做相似度搜索,就比较困难了。穷举法固然可行,但非常耗时。针对这种场景,本文主要介绍方案级别的信息。2. 常用方案通用的向量原创 2020-12-21 23:07:43 · 2778 阅读 · 0 评论 -
Seq2Seq模型中的贪心搜索(Greedy Search)
1. 引入用Seq2Seq模型开发翻译系统时,假设输入一句法语,输出英文。在Decoder输出部分,选择不同的单词,输出(翻译)的结果也会不同。这里用下图来举例说明:一个法语句子,被Seq2Seq模型翻译为不同的4句英文,我们该选择哪个结果作为最终结果呢?上图中,给了一个公式,式中的x表示法语句子,y表示各个单词组成的最终的英文句子,不同的y的组合表示不同的翻译,即y1~yn表示单词序列。解决这个问题的关键,就在于找到合适的y值,使得图中的公式值最大化。但是具体怎么做呢?下面我们介绍一种方法:原创 2020-12-06 23:13:29 · 1396 阅读 · 0 评论 -
理解词嵌入除偏
1. 引入机器学习已经被用到各行各业做辅助决策了,甚至是制定极其重要的决策。所以,我们应该尽可能的确保它不受非预期形式偏见的影响,比如性别歧视、种族歧视等等。下面介绍一种减少或消除这些偏见的影响,以消除“性别偏见”为例来说明算法的具体过程。2. NLP中性别偏见的例子在NLP中,由于语料的原始作者写作时,可能会自带自己的偏见,所以训练模型得到的词嵌入也会学到这种偏见。比如下图中的一些NLP任务,通过词嵌入,得到的结果(红框中)是具有明显的偏见的。训练集中的原始语料,是词嵌入带有性别歧视、种族歧视原创 2020-11-08 23:40:35 · 668 阅读 · 0 评论 -
词嵌入与情绪识别
1. 引入情绪识别是NLP中的比较重要的通用任务。对于情绪识别来说,通常标注的数据量都会比较小,一般语料中也就一万到十万个单词。这样小的语料,对于训练NLP模型来说,是一个难点。下面给出两种方法,借助于词嵌入,我们都能在比较小的语料中,得到不错的模型。2. 方法一:平均词向量具体步骤:获取各个单词的词向量直接用句子中,每个单词的one-hot编码,乘以词嵌入矩阵,得到每个单词的词向量将句子中各个单词词向量相加后取平均,得到一个新向量,用于表示该句子用这个新的词向量,送到sof原创 2020-10-09 22:08:07 · 339 阅读 · 0 评论 -
skip-gram与负采样
1. skip-gram模型skip-gram是word2vec中的主要模型之一(另一个模型是CBOW)。简单来说,CBOW是给定上下文,来预测input-word;而skip-gram是给定input-word,来预测上下文。下面我们来理解skip-gram模型。首先,给定句子如下The man who passes the sentence should swing the sword.-选择passes为中心词,window-size设置为3,则训练过程如下图通过该图可以大致理解skip-原创 2020-08-19 23:19:10 · 2003 阅读 · 0 评论 -
Word Embedding与analogy reasoning(词嵌入与类比推理的过程)
1. 引入Word Embedding是"词嵌入"的意思,这是语言表示的一种方式。它可以让算法理解一些类似的词。简单理解,就是词向量,代替one-hot编码做词向量。词嵌入比one-hot编码有更多优点:词嵌入可以用一个低维向量来表示词向量,而one-hot编码一般维度一般都比较高词嵌入可以表征词的相似性,语义上相似的词,其词向量也比较接近通用性强,在分类,回归,NER等应用中,都可以使用词嵌入表示的词向量,还有一个很常见的应用,是 analogy reasoning (类比推理原创 2020-08-06 23:43:14 · 903 阅读 · 0 评论 -
详解softmax
1. 引入在分类问题中,我们常用softmax和sigmoid作为神经网络输出层的激活函数,这样可以让网络输出样本属于各个类别的概率值。在二分类问题中,常用sigmoid。多分类问题中,使用softmax,它能把多个神经元的输出,映射到(0,1)区间内,可以把各个输出值看成概率来理解,即是样本属于某一个类别的概率,从而做到多分类。简单来说,softmax就是能把一组数据,转换为各个数据对应的概率值,如下所示:数据:[-1.1, -4.9, 1.2, -2.4, 2.2, 2.4]softmax输原创 2020-07-10 21:58:24 · 1251 阅读 · 0 评论 -
理解词嵌入WordEmbedding
1. 引入词嵌入,英文为 Word Embedding,这是语言表示的一种方式。它可以让算法理解一些类似的词。2. 词表示:one-hot我们可以用one-hot向量来表示词,如下图所示。这种表示方式,我们需要首先获取一个字典,比如字典中有100000个词。对每一个词,都得到一个向量,其中该词对应位置上置一,其他位置置零。比如man这个词位于字典的第5391个位置,则我们为这个单词创建一个100000维度的向量,其中第5391个位置处值为1,其他位置值为0.这种方法的缺点,是它把每个词孤立了原创 2020-06-19 23:19:31 · 526 阅读 · 0 评论 -
双向RNN原理
1. 引入我们之前已经了解了RNN中的GRU[2]和LSTM[3]。怎么样才能进一步优化RNN这样的模型呢?就是使用双向RNN,它能使得我们在序列的某点处,不仅获取之前的信息,还能获取将来的信息。将来的信息是什么意思呢?为什么根据之前的信息还不足够网络做决策?我们看下面的一个例子:用传统RNN做NER,判定某个单词是否为人名。例子中给出的两句话,第一句话中的Teddy不是人名(是泰迪熊...原创 2020-05-05 22:44:01 · 7334 阅读 · 1 评论 -
理解LSTM
注意:请先看解释GRU的博客,否则不容易看懂本文1. 引入GRU(门控循环单元)允许我们在序列学习中,学习非常深的连接。其他类型的单元,也能做到这个效果,比如本文要讲的LSTM,它甚至比GRU的效果要好(更通用,更强大)。下面是对GRU做的一个总结,需要深入了解的,可以先看(补充GRU博客链接)。2. LSTMLSTM是长短记忆网络(Long Short Term Memory un...原创 2020-04-19 20:43:06 · 512 阅读 · 0 评论 -
RNN中的门控循环单元GRU
1. RNN隐层单元结构可视化下面是一个基本的RNN隐层单元结构:其中,a是上一个时刻的激活函数输出值,x是当前时刻的输入,y是当前时刻的输出。要理解这个单元结构,需要注意2点:a与x结合,通过激活函数的作用后,有两个分支,一个分支作为下一个时刻的输入a另一个分支通过softmax作用后,作为当前时刻的输出y2. GRU单元中的符号GRU(Gated Recurrent Uni...原创 2020-04-07 21:52:24 · 1788 阅读 · 0 评论 -
RNN中的梯度消失与梯度爆炸
1. 引入我们可以在[1]中,看到RNN的结构,如下图所示。假设我们输入两个句子如下:The cat, which already xxx yyy zzz …, was full.The cats, which alrady xxx yyy zzz …, were full.这两句话中,“xxx yyy zzz …”表示句子中间有很长的文本,此处略去。我们只看单数与复数,最后一个逗...原创 2020-03-17 20:50:35 · 1545 阅读 · 1 评论 -
详解语言模型
语言模型,能够告诉你,某个特定的句子,出现的概率是多少原创 2020-02-26 20:30:53 · 1178 阅读 · 0 评论 -
RNN的5种典型结构
引入我已经在文章[1]中介绍了一些序列模型的应用,比如“中文翻译为英文”,“NER命名实体识别”,“歌词生成”,“情绪识别”。也在文章[2]中介绍了RNN结构的基本原理。那问题来了,要实现“中译英”和“歌词生成”,我们选用的RNN结构是一样的吗?RNN有哪些典型的结构,分别对应哪些应用场景呢?RNN的5种典型结构首先,直接给出RNN的5中典型结构,如下图。然后我们依次讲解。1. O...原创 2020-01-27 21:49:03 · 4343 阅读 · 0 评论 -
理解RNN的结构+特点+计算公式
引入在某一些情况下,我们是无法使用标准的全连接神经网络的。比如,预测句子中哪几个单词是人名,如果使用标准的全连接神经网络,网络结构如下:如果使用这种结构,会存在两个问题输入句子长度和输出向量的维度,可能会不一样。对不同的样本,其输入/输出维度都不同。当然你可以采用zero padding,将每个句子都填充到最大长度,但仍然不是一种很好的方式改结构无法共享从文本不同位置上学到的...原创 2019-12-08 21:39:23 · 8421 阅读 · 2 评论 -
ResNet原理是什么,为什么ResNet能做到那么深?
引入非常深的网络,是难以训练的,因为有梯度消失和梯度爆炸的问题存在。但残差网络(ResNet)却能够做到非常深,2015年,微软亚洲研究院的何凯明等人使用152层的残差网络ResNet参加了当年的ILSVRC,在图像分类、目标检测等任务中的表现大幅超越前一年的比赛的性能水准。ResNet与其他的深层次网络有什么区别?为什么它能做到这样的效果?普通深层次网络的问题普通的深层次...原创 2018-05-07 22:09:45 · 15007 阅读 · 0 评论 -
深度学习中为什么使用卷积?
深层神经网络中使用卷积的优点:参数共享,稀疏连接,平移不变。参数共享(Parameter Sharing)准确的定义如下:A feature detector (such as a vertical edge detector) that's useful in one part of the image is probably useful in another part o...原创 2018-04-23 21:53:31 · 4893 阅读 · 0 评论 -
深层神经网络与浅层神经网络的区别
深度学习,为什么要“深”?原创 2017-12-18 22:19:04 · 22977 阅读 · 2 评论 -
神经网络结构设计指导原则
输入层,隐层,输出层神经元个数怎么选?几个隐层比较好?各个隐层之间的神经元个数怎么定?原创 2016-10-15 09:03:29 · 6788 阅读 · 0 评论 -
机器学习算法调优的一般步骤
机器学习分类结果不理想时,下一步应该怎么办?如何check,怎么调整?原创 2016-11-01 21:48:20 · 11390 阅读 · 0 评论 -
keras构建特定结构的CNN
详解如何用keras实现CNN结构,如300C5-MP2-300C3-MP2-200N-10N。原创 2016-09-08 23:13:15 · 1809 阅读 · 0 评论 -
神经网络优化算法选择
keras中神经网络优化算法SGD, Adam等如何选择。原创 2016-06-30 19:41:29 · 13382 阅读 · 0 评论 -
1x1的卷积能做什么呢?
所谓信道压缩,Network in Network是怎么做到的?对于如下的二维矩阵,做卷积,相当于直接乘以2,貌似看上去没什么意义。但是,对于下面这种32通道的数据,如果我用1个1x1x32的卷积核与其做卷积运算,得到的就是1个6x6的矩阵。在这个过程中,发生了如下的事情:(1)遍历36个单元格(6x6)(2)计算左图中32个信道中截面与卷积核中32个元素的乘积(3)...原创 2018-05-14 20:41:27 · 6064 阅读 · 2 评论 -
理解深度学习中的Inception网络
背景构建CNN时,你要决定卷积核的大小,是1x3合适,还是3x3合适,还是5x5合适?要不要添加pooling层?做这些决定(很可能是通过grid search)很麻烦,对吧?Inception网络的优点,就是能代替你做决定,酷吧!Inecption层的基本思想Inecption层是Inecption网络中的基本结构。Inecption层的基本原理如下图:Inecp...原创 2018-06-08 22:00:39 · 13711 阅读 · 12 评论 -
YOLO算法(Bounding Box)目标检测
Abstract在《基于深度学习的目标检测思路》中,提到了可以用滑动窗口的思路来做目标检测。除了滑动窗口,还有其他的目标检测算法吗?目标检测介绍传统的目标检测算法,都是基于滑动窗口,训练模型的,如下图所示。该方法对目标的标注,需要标注目标的位置、大小、类型等信息,标注成本是很高的。但是,做目标检测是少不了这个标注工作的。 这种传统的滑动窗口目标检测方法,最大的缺点是: 窗口大...原创 2018-07-26 20:53:09 · 21035 阅读 · 5 评论 -
强化学习极简概述
1. 摘要通过对比有监督学习,来理解强化学习的基本思想。2. 强化学习与有监督学习的区别在有监督学习中,我们通过建立“特征->标签”对,来训练模型,从而让模型学会解决分类、回归问题。但在强化学习中,我们没有标签,我们的Y值只是一个分数(reward)。通过这个分数,可以衡量模型所做决策(决策位于X中)的好坏。在gym环境中,the goal is always to ...原创 2018-07-22 21:30:23 · 426 阅读 · 0 评论 -
可视化理解卷积神经网络
摘要通过可视化分析,更能直观理解CNN各层的功能。CNN各层能检测到的特征第1层,学习到一些简单特征,如下图第2层,检测到复杂的模式和形状,如下图第3层,检测到了图像中的某一部分,或某些特定的图案(更加复杂的模式),如下图第4层,比上一层复杂的模式,比如检测到了同一个物种的狗,如下图第5层,检测到了更加复杂的事物,比如检测到了更加多样性的狗,或者花,如下图...原创 2018-11-22 21:58:33 · 2605 阅读 · 0 评论 -
L1正则化与L2正则化的区别
摘要正则化的本质是在Cost Function中添加的p-范数。本文从正则化的本质p-范数入手,解释了L1正则化和L2正则化的区别。正则化在Cost Function上添加了正则化项,就能降低模型的过拟合程度,这就是正则化的作用。关于正则化更细节的讲述,请参考为什么正则化能减少模型过拟合程度。正则化项的不同,就产生了L1正则化和L2正则化。L1正则化和L2正则化的表达式,其实就是1-范数...原创 2018-12-10 20:45:36 · 22757 阅读 · 0 评论 -
详解keras的model.summary()输出参数Param计算过程
摘要使用keras构建深度学习模型,我们会通过model.summary()输出模型各层的参数状况,如下:________________________________________________________________Layer (type) Output Shape Param # ==============...原创 2018-12-22 20:32:24 · 125271 阅读 · 22 评论 -
CNN在自动驾驶中的不同结构
1. 引入真实的驾驶场景,是根据一些测量值,来预测汽车的油门、刹车、方向盘角度的过程。这些测量值可能包括:汽车速度,加速度,转向角,GPS坐标,陀螺仪角度等值,当然也少不了摄像机拍摄的车辆前方的图像。这其中CNN最擅长做的,是图像数据的处理,包括物体识别(行人,车辆,车道,交通标志),也包括回归(方向盘角度预测)。自动驾驶领域另CNN大放光彩的,是Intel发布的一篇paper[1]:End ...原创 2019-04-08 22:17:14 · 1320 阅读 · 0 评论 -
YOLO-V3的一些细节
1. AbstractYOLO的基本思想是通过多层CNN预测Bounding Box的中心(x,y)坐标及其长宽,当然也少不了类别信息,参考[1]。YOLO-V3的结构/基本原理是什么样?有哪些重要的参数/概念?YOLO-V3的优点是什么?下文着重讲解。2. YOLO-V32.1 模型结构根据YOLO-V3原创paper[2]的内容,YOLO-V3使用了一个含有53个卷积层的CNN作为F...原创 2019-01-13 21:26:11 · 4059 阅读 · 0 评论