自然语言处理

从attention到self-attention

爷,独闯天下 提交于 2020-11-30 22:12:14
attention的本质   通过计算Query和一组Key的相似度(或者叫相关性/注意力分布),来给一组Value赋上权重,一般地还会求出这一组Value的加权和。      一个典型的soft attention如下公式所示:      先用Query求出分别和一组Key计算相似度,计算相似度的方法有很多种,常用的有点乘、perceptron   然后用softmax归一化,得到每个Key对应的概率分布α(或者叫权重),即attention   由于Key和Value是一一对应的,再用α对Value做加权求和,得到加权和 Seq2Seq模型中attention的应用      在Seq2Seq模型中,Key = Value = encoder hidden state(即h),而 Query = decoder hidden state(即z)   其实际的含义也很好理解:通过计算当前decode出来的hidden state和encode时的hidden state的关系,给原来所有的encode的hidden state加一个权重,然后求加权和,相当于计算当前输出词对每个输入词的相关性,用这个相关性做加权求和,得到最终的hidden state。   (上图刚好没有计算Q、K、V的过程,计算顺序是这样的:z0、h -> α0 -> c0 -> z1 ... ..., 其中

高性能PyTorch是如何炼成的?过来人吐血整理的10条避坑指南

≡放荡痞女 提交于 2020-11-29 22:47:57
选自towardsdatascience 作者:Eugene Khvedchenya 机器之心编译 参与:小舟、蛋酱、魔王 高性能 PyTorch 的训练管道是什么样的?是产生最高准确率的模型?是最快的运行速度?是易于理解和扩展?还是容易并行化?答案是,包括以上提到的所有。 如何用最少的精力,完成最高效的 PyTorch 训练? 一位有着 PyTorch 两年使用经历的 Medium 博主最近分享了他在这方面的 10 个真诚建议 。 ‍ 在 Efficient PyTorch 这一部分中,作者提供了一些识别和消除 I/O 和 CPU 瓶颈的技巧。第二部分阐述了一些高效张量运算的技巧,第三部分是在高效模型上的 debug 技巧。 在阅读这篇文章之前,你需要对 PyTorch 有一定程度的了解。 好吧,从最明显的一个开始: 建议 0:了解你代码中的瓶颈在哪里 命令行工具比如 nvidia-smi、htop、iotop、nvtop、py-spy、strace 等,应该成为你最好的伙伴。你的训练管道是否受 CPU 约束?IO 约束?GPU 约束?这些工具将帮你找到答案。 这些工具你可能从未听过,即使听过也可能没用过。没关系。如果你不立即使用它们也可以。只需记住,其他人可能正在用它们来训练模型,速度可能会比你快 5%、10%、15%-…… 最终可能会导致面向市场或者工作机会时候的不同结果。

微软亚研院副院长周明:从语言智能到代码智能

强颜欢笑 提交于 2020-11-29 15:22:48
来源:智源社区、AI科技评论 本文 约4700字 ,建议阅读 10 分钟 周明副院长在“语言与智能高峰论坛”讲解从语言智能到代码智能。 11月6日上午,在中国中文信息学会和中国计算机学会联合创办的“ 语言与智能高峰论坛” 上,微软亚洲研究院副院长周明,以 《从语言智能到代码智能》 为题,介绍了智能代码理解和生成代码的机理、预训练模型(CodeBERT/CodeGPT)、基准数据集(CodeXGLUE)以及融合了编程语言句法和语义信息的新的评价指标(CodeBLEU),分享了微软在编程语言知识和上下文进行推理,支持代码检索、补全、翻译、纠错、问答等场景的应用。 周明,微软亚洲研究院副院长、中国计算机学会副理事长、国际计算语言学会(ACL)前任会长。 1、NLP预训练模型到代码智能预训练模型 自然语言处理在深度学习的支撑下取得了迅猛发展,把自然语言发展的技术迁移到智能代码研究领域,以提升代码能力成为近年来新的研究热点。 代码智能能够让计算机具备理解和生成代码的能力,利用编程的语言知识和上下文进行推理,支持代码检索、代码翻译等场景应用。 图1:基于神经网络的NLP研究(NN-NLP) 图为清华大学唐杰团队总结的过去5年ACL文章中自然语言发展的主要工作,包括 Word embeddings、LSTM、Encode decoder、RNN、Pre-trainedmodel 等

一行命令自动戴上口罩

感情迁移 提交于 2020-11-28 02:43:00
1 前言 2019 年底开始蔓延的新型肺炎疫情牵动人心,作为个体,我们力所能及的就是尽量待在家中少出门。 看到一些朋友叫设计同学帮忙给自己的头像戴上口罩,作为技术人,心想一定还有更多人有这样的诉求,不如开发一个简单的程序来实现这个需求,也算是帮助设计姐姐减少工作量。 于是花了些时间,写了一个叫做 face-mask [1] 的命令行工具,能够轻松的给图片中的人像戴上口罩,而且口罩的方向和大小都是适应人脸的哦~ 2 使用 安装 face-mask 确保 Python 版本在 3.6 及以上 pip install face-mask 使用 face-mask 直接指定图片路径即可为图片中的人像戴上口罩,并会生成一个新的图片(额外有 -with-mask 后缀): face-mask /path/to/face/picture 通过指定 --show 选项,还可以使用默认图片查看器打开新生成的图片: face-mask /path/to/face/picture --show 效果 给一个人戴上口罩 给多个人戴上口罩 给动漫人物戴上口罩 3 实现 思路 要想实现上面的效果,我们应该怎么做?不妨这么想: 首先是识别出人的鼻子(nose_bridge)和脸轮廓(chin) 通过脸轮廓确定出脸左点(chin_left_point)、脸底点(chin_bottom_point)和脸右点

就算是戴上口罩,AI也知道你在说什么

╄→尐↘猪︶ㄣ 提交于 2020-11-28 01:49:51
萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 吃饭的时候,想要和对面聊聊天,然而周遭嘈杂的声音,让你根本不知道ta在说什么? 又或者,想与听障人士交流,然而对方听不见你的声音? 现在,检测面部肌肉变化的AI来了,只要你动了嘴,哪怕没出声,它也能知道你在说什么。 这是EMNLP 2020的最佳论文,来自UC伯克利的两位作者,用AI和电极做了个“沉默语音”的检测模型,可以检测到你想说、但没说出声的话。 其中的原理究竟是什么,我们来一探究竟。 用电极收集你小声哔哔的证据 “无声语音”的本质,是人在说话时面部、颈部肌肉的变化。 说白了,你在对口型时虽然没有出声,但你的脸和脖子“出卖”了你。 而能够检测“无声语音”的AI,也正是这么被做出来的。 在收集数据时,研究者会先在实验者的脸上等部位贴8个贴片,每个贴片都是一个“监视肌肉变化”的传感器,像这样: 在这之后,需要录制一段实验者的有声语音,并与肌电图进行对应,如下图 (会录制两种语音数据,一种每句话4个词左右,另一种每句话16个词左右) : 这种方法能够将肌肉的变化情况、和语音的类型对应起来。 在记录数据的过程中,还要再录制一段“对口型”的肌电图,但不需要发声,也就是“沉默语音”。 之所以要收集两份肌电图,是因为人在无声说话时,肌肉的变化与发声说话时的变化有些区别,例如部分发音部位的肌肉震颤幅度会变小,语速也有所变化。

一文带你了解两种Transformer文字识别方法

坚强是说给别人听的谎言 提交于 2020-11-27 12:47:35
摘要 :受Transformer模型的启发,目前一些学者将该结构应用到文本行识别中,以替代RNN,取得了良好的效果,如在HGA-STR和 SRN。 当前的文本行识别器为拥有更强的序列语义能力,模型多采用CNN + RNN的结构,如目前使用十分广泛的两个识别器CRNN和Aster,这些模型取得了非常好的效果。然而由于RNN只能采用串行计算,在目前大量采用并行计算设备的前提下,RNN面临着明显的速度瓶颈。若弃用RNN只使用CNN,性能往往不尽如人意。在NLP领域,Ashish Vaswan[1]等人提出的Transformer模型在语言理解相关任务上十分成功,并优于CNN和RNN效果,展现出Transformer强大的序列建模能力。Transformer模型基于Attention实现,该操作可并行实现,因此该模型具有良好的并行性。 受Transformer模型的启发,目前一些学者将该结构应用到文本行识别中,以替代RNN,取得了良好的效果,如在HGA-STR[2]和 SRN[3]。下面对两种方法进行介绍,总体上,HGA-STR更接近原有的Transformer的结构,使用了和Transformer类似的解码结构,而SRN则是使用了Transformer unit进行特征提取,并采用该文作者提出的并行解码器,整个模型拥有更好的可并行性。为较好理解下面两篇文章

算法岗面试整理 | 腾讯、字节、美团、阿里

旧街凉风 提交于 2020-11-26 15:05:08
作者 | 阿毛冲冲冲 来源 | 牛客网,见『阅读原文』处 整理 | NewBeeNLP,本文仅供学术交流,如有侵权,请留言联系小编处理。 面试锦囊之面经分享系列,持续更新中 欢迎后台回复" 面试 "加入讨论组交流噢 文 末 也有内推,需要的同学自取哈 写在前面 三月面试了好几轮,写个帖子记录一下问过的问题,为接下来的其他公司的面试查漏补缺一下,也给大家一些准备的方向。 腾讯 一面(凉) 自我介绍 问做过的项目,同时在过程中穿插用过的模型的问题,比如 word2vec两个模型的损失函数是什么 cbow和skipgram的比较,为什么skipgram会更好,哪个的计算复杂度高 为什么使用随机森林 决策树的分裂方式是什么,根据什么变量来决定分裂变量 手撕代码 给一个数N,k,每一轮可以进行两种操作的其中一种:①所有的数拆分成两个更小的数;②所有的数-1。已知拆分操作只能进行k次,问 最少需要多少次把所有数都消去 给一串数列,这串数列有正有负,但是总和为0。每个数xi代表一个村庄,正的表示村庄想卖出xi份水果,负的表示想买入xi份水果。两相邻村庄间的距离是相同的,单位距离运送一份水果的运费均相同,每份都是k。问,把每个村庄的需求和供给都解决掉需要的最少运送费是多少? 这是第一次面试,凉得很彻底,因为很多算法细节都没有好好复习,而且代码写的也不够整洁快速 字节tiktok海外版(南亚组?)

热门的模型跨界,Transformer、GPT做CV任务一文大盘点

那年仲夏 提交于 2020-11-26 13:45:09
作者|陈萍 来源|机器之心 可能大家心里都有一种错误认知,做自然语言处理任务的模型不能够用来进行计算机视觉任务。其实不然,现阶段已出现好多研究,它们通过算法的改进,将在 NLP 领域表现良好的模型,如 Transformer、GPT 等进行改进并应用于视觉任务,不仅实现了模型跨界,而且取得了不错的性能。 模型跨界效果如何呢? 人工智能的快速发展已经淋漓尽致地体现在我们的日常生活中,从人脸识别、语音识别到机器翻译等等,无不展示着 AI 带来的便利。已经落地的产品层出不穷,其后的算法模型你又了解多少呢?有些模型不仅在自己的领域表现出色,更能跨界出圈。 近几年,NLP 领域的算法势如破竹,不断取得新突破,CV 领域同样不断取得创新。新工具、新算法、新算力等不断迭代更新,在各自领域大放异彩。 如果说将 NLP 领域的模型应用到 CV 领域,或反之,那效果该如何呢?模型跨界是否可行? 答案是肯定的。下面我们来盘点一下模型的跨界、破界表现如何?本文介绍的内容包括: 《End-to-End Object Detection with Transformers》:Facebook 将 Transformer 应用于目标检测任务; 《Generative Pretraining from Pixels》:OpenAI 用 GPT-2 做图像分类的尝试; 《LAMBDANETWORKS:

资源分享|个人私藏和精选的视频教程资源汇总

怎甘沉沦 提交于 2020-11-25 14:47:47
公众号到今天恰好建立了半年,在这里我分享自己精选和私藏的视频教程。 下面的教程并不会漫无目的的夸多,只分享我觉得足够好,足够精的好资料,希望对大家能有所帮助。 李宏毅老师机器学习视频 李宏毅老师深度学习视频 斯坦福吴恩达老师经典机器学习视频 林轩田老师机器学习基石课程视频 林轩田老师机器学习技法课程视频 李飞飞老师著名课程CS231视频 Neural Network for Machine Learning视频[Hinton讲解] Reinforcement Learning Course by DeepMind‘s David Silver CS294 Deep Reinforcement Learning 斯坦福NLP课程视频[Dan Jurafsky教授主讲] 哥伦比亚大学NLP课程视频 CS224 DeepLearning for NLP课程视频 我觉得上面的资料基本上涵盖了绝大部分现在公认的好资源,我也将上面所有的视频资源均放在百度云上资源分享的文件夹下,如下所示: 本次资源分享包括下面资料: 1、李宏毅老师机器学习视频 2、李宏毅老师深度学习视频 3、斯坦福吴恩达老师经典机器学习视频 4、林轩田老师机器学习基石课程视频 5、林轩田老师机器学习技法课程视频 6、李飞飞老师著名课程CS231视频 7、Neural Network for Machine Learning视频

Python.SVM(三)核方法

拜拜、爱过 提交于 2020-11-25 14:01:43
Python.SVM(三)核方法 1 什么是核方法 往简单里说,核方法是将一个低维的线性不可分的数据映射到一个高维的空间、并期望映射后的数据在高维空间里是线性可分的。 我们以异或数据集为例:在二维空间中、异或数据集是线性不可分的;但是通过将其映射到三维空间、我们可以非常简单地让其在三维空间中变得线性可分。 比如定义映射: 该映射的效果如下图所示: 可以看到,虽然左图的数据集线性不可分、但显然右图的数据集是线性可分的,这就是核工作原理的一个不太严谨但仍然合理的解释 从直观上来说,确实容易想象、同一份数据在越高维的空间中越有可能线性可分,但从理论上是否确实如此呢? 1965 年提出的 Cover 定理从理论上解决了这个问题,我们会在文末附上相应的公式,这里暂时按下不表 至此,似乎问题就转化为了如何寻找合适的映射、使得数据集在被它映射到高维空间后变得线性可分。 不过可以想象的是,现实任务中的数据集要比上文我们拿来举例的异或数据集要复杂得多、直接构造一个恰当的的难度甚至可能高于解决问题本身。 而核方法的巧妙之处就在于,它能将构造映射 这个过程再次进行转化、从而使得问题变得简易:它通过核函数来避免显式定义映射往简单里说,核方法会通过用能够表示成 的核函数 替换各算式中出现的内积 来完成将数据从低维映射到高维的过程。 换句话说、核方法的思想如下: 将算法表述成样本点内积的组合