• [技术干货] 学习心得-计算机视觉基础:深度学习和神经网络
    AI基础课程 计算机视觉基础:深度学习和神经网络AI解决方案深度学习的发展前景及其面临的巨大挑战;深度神经网络的基本单元组成和产生表达能力的方式及复杂的训练过程。深度学习的方法论和重要性近年来,深度学习在多个领域取得了重要突破,带来全新的方法论变革。深度学习(Deep Learning)源于人工神经网络的研究,是机器学习的一个分支。深度学习主要依赖于深度神经元网络,这种神经网络类似于人类的大脑,其学习过程也与人类十分相似。基本上,你输入海量的数据给它以后,它就会通过训练,学习到海量数据的特征。举例来说,有两组神经元,第一组神经元接收到信息后,用算法将其抽象化,而后再将简化的信息传入到第二组神经元。第二组神经元通过相同或是其他的算法再将信息进行简化,就得出了一定的结果。深度学习使机器更加聪明,带给我们更加智能的服务。在深度学习中,现在效果最好的是在计算机视觉,语音识别领域,也就是对应的人脸识别,物体识别,语音识别,深度学习针对图片,视频,音频领域数据类型应用效果最好,跟传统方法相比提升了30~50%。深度学习三要素:数据、模型、计算数据数据来源:主要通过对初始数据图片进行人工标注和机器标注。数据样本非常的重要,好的样本等于成功了一半。模型从 Caffe model zoo 找到适用模型之后主要针对两个文件进行修改调整:第一个文件是输入,比如说修改一下 data 文件,或将输入的地址改成刚刚定义的 TXT 文件;第二个是 solver 文件,对 baselr 参数进行调整。计算训练计算方式主要有命令行和 python 接口两种方式。上文提到的训练方式主要是以命令行的方式进行的。此外我们还可以通过 python 接口进行训练。现代化的深度卷积神经网路我们就来谈谈牛逼的深度卷积神经网络CNN:CNN:Convolutional Neural NetworkVGGNet,LeNet,Google Net,Residual Net从神经学角度来说,卷积神经网络的设计灵感来源于人脑视觉皮层对外界事物的感知,人眼以图像的形式把感知到的外界事物传递给大脑,大脑通过逐层的对该图像进行抽象,抽取出图像的边角等代表图像的高纬特征给大脑做出准确的判断。回顾历史,1984年,日本学者福岛邦彦提出了卷积神经网络的原始模型神经感知机(Neocognitron),1998年,Yan. LeCun提出了深度学习常用模型之一卷积神经网络(Convoluted Neural Network, CNN),成就了现在基于CNN的图像、语音、计算及视觉和NLP技术的快速发展。CNN的精华是:三概念两核心,这里做个简要的概要性介绍。两核心是指CNN的两个核心操作:卷积和池化。卷积:主要起到作用是抽取特征,使网络具有一定转移不变性,也有一定降维的作用。概述:设定一个n行m列的卷积窗口,采用的relu(elu,leakyrelu)做为激活函数函数,对输入X进行卷积操作。注意:1、卷积可能单通道或者多通道卷积;2、卷积操作时分为padding和非padding两种方式,padding也分为很多方式,比如zero-padding,mean-padding等。3、对同一个输入可以设置不同大小卷积和,或从不同的位置,或不同的卷积步长多次进行卷积,目的就是为了尽可能多的抽取特征。池化:主要起降维的作用。概述:设置一个n行m列的池化窗口,对输入X进行池化操作,采用relu(elu,leakyrelu)做为激活函数。也可采用sigmoid或tans型激活函数,但注意函数的饱和死区特性导致的反向传播时的梯度消失问题,可以配合Batch Normalization使用。池化也有很多方式,比如最大值池化、平均值池化。三概念指的是CNN的三个重要概念:局部感受野、权值共享和下采样/降采样。局部感受野:卷积操作时卷积窗口与输入X重合的部分。权值共享:卷积操作或池化操作时,卷积窗口或池化窗口的权值不发生变化。下采样/降采样:直观感觉就是池化操作。可见,卷积和池化的随机组合赋予了CNN很大的灵活性,因此也诞生了很多耳熟能详的经典网络:AlexNet,VGGNet,Google Inception Net,ResNet,四种网络在深度和复杂度方面一次递增。AlexNet获得了ILSVRC(ImageNet Large Scale Visual Recognition Challenge)比赛2012年冠军(8层神经网络,top-5错误率16%,使用更多额外数据可达到15.3%),VGGNet获得2014年ILSVRC的亚军(19层神经网络,top-5错误率7.3%),Google Inception Net获得2014年ILSVRC冠军(22层神经网络,top-5错误率6.7%),ResNet获得2015年冠军(top-5错误率3.57%,152层神经网络)。下面概要介绍下这几种网络。AlexNetAlexNet是由Hinton的学生Alex Krizhevsky在2012年提出的深度卷积网络,可以看做是Lenet加深加宽版本。AlexNet中采用了一系列的新的技术点:成功应用了Relu、Dropout和LRN等trick,首次采用GPU进行加速,作者还开源了他们在GPU上训练网络的源代码。AlexNet整个网络包含6亿3000万个连接,6千万个参数,65万个神经元,包含5个卷积层,其中三个后面连接了最大池化层,最后还用了3个全连接层。2012年ALexNet以显著的优势赢得了2012年ILSVRC比赛冠军,top-5错误率降低至16.4%,比第二名26.2%成绩有了巨大的提升。AlexNet推动了神经网络的再次崛起,确立了深度学习在计算及视觉的统治地位,同样也促进了深度学习在语音识别,自然语言处理等领域的拓展应用。深度学习的成就 局限性和未来方向低预算或低承诺问题深度学习模型非常灵活,有大量的架构和节点类型、优化器以及归一化策略。依靠应用,你的模型也许会有卷积层或者循环结构;它也许真的很深,或者仅有几个隐藏层;它也许使用整流线性单元或者其他的激活函数;它或许有dropout,或许没有,并且权重很可能被归一化。以上只是一个部分列表,还有很多其他的类型的节点、链接甚至损失函数可以尝试。有很多超参数可以微调,很多架构可以探索,尽管训练一个大型的神经网络非常耗时。谷歌最近鼓吹其AutoML流程可自动找到最佳架构,但是需要超过800块GPU全力运转数周,这可不适合所有人去做。重点是训练深度网络在计算和调试方面成本很高,这种费用对于许多日常预测问题并没有任何意义,甚至调整小型网络速度也太慢。即使有足够的预算和承诺,首先作为基准也没有理由不尝试其他方法。你可能会惊喜地发现,线性支持向量机才是你真正需要的全部。向一个普通听众解释和传达模型参数/特征重要性深度网络之所以臭名昭著是因为它是一个黑箱,预测能力强大却无法被解释。即使最近有很多工具在一些领域表现显著,它们并不会彻底转向全部的应用。这些工具在你想要确保网络是否欺骗你时工作良好,这主要是通过存储数据集或者聚焦特定的假特征实现的。但是向深度网络的整体决策阐释预特征的重要性依然很困难吗?在这一领域,由于学习系数与回应存在直接关系,没有什么可以真正打败线性模型。这在向一般听众传递这些阐释时尤其关键。例如,内科医生需要整合所有类型的分散数据从而做出诊断。变量与结果之间的关系越简单和直接,内科医生对其利用就越好,并且不会低估/高估其价值。进而,在很多案例中模型的精确度并没有理论阐释那么重要。例如,一个策略决策者也许想要知道人口统计的变量对死亡率的影响,并且相比于预测精度,他很可能对两者关系的直接近似值更感兴趣。在这两种案例中,相对于更简单、更深入的方法,深度学习处于劣势。建立因果机制模型阐释的极端案例是试图建立一个机制模型,即,一个可以真正捕捉数据背后的现象的模型。好的实例包括试图猜测两个分子是否在一个特定的细胞环境中交互?或者假设一个特定的市场策略如何对销售产生实际影响。该领的专家认为,老式的贝叶斯方法不可替代;它是我们进行因果表征和推理的最佳方式。Vicarious最近在这方面有一些杰出成果(https://www.vicarious.com/img/icml2017-schemas.pdf),证明了为什么这一更加原则性的方法可以在视频游戏任务中比深度学习泛化地更好。从「非结构」特征中学习这个有待讨论。我发现深度学习擅长的一个领域是为一个特定任务找到数据的有用表征。一个比较好的示例是上述的的词嵌入。自然语言有着丰富而复杂的结构,其可通过「语境-意识」网络被近似:每个词可表征为一个向量,它编码了其被使用最多的语境。使用在自然语言处理任务的大型语料库中学习的词嵌入有时可使另一个语料库中的特殊任务获得提升。然而,如果有问题的语料库是彻底非结构的,那么深度学习将毫无用武之地。例如,你正在通过查看关键词的非结构列表进行目标分类。由于关键词并不被用于任何特定结构,词嵌入并不可能帮助太多。在这一情况中,数据是真正的词包,表征对于任务也充足。一个反方论点也许是词嵌入实际上并没有那么昂贵,如果使用预训练的词嵌入,你也许可以更好地捕捉到关键词相似性。然而,我依然倾向于从词包表征开始,并查看我是否能够得到好的预测。毕竟,相比于对应的词嵌入槽,词包的每一个维度更容易阐释。深度是未来深度学习很热,资金充足,且发展飞快。当你在一个会议上读到一篇深度学习论文时,它可能是两三次迭代后的结果。这给我的上述观点提出了很大的注意:不久的将来,深度学习也许在一些场景中依然超级有用。阐释深度学习的工具变得越来越好。最近的软件(比如Edward)融合了贝叶斯建模和深度网络框架(详见:深度概率编程语言Edward:融合了贝叶斯、深度学习和概率编程),借助概率编程和自动变分推理,量化了神经网络参数和简单贝叶斯推理的不确定性。长远看,存在一个简化的建模词汇表,揭示深度网络可以具有的显著属性,从而减少需要测试的事物的参数空间。
  • [技术干货] 【学习心得】PyTorch训练专题
                                                     课程:《PyTorch训练专题》Pytorch全景:当前选择在线对接适配方案的主要原因有以下四点:1.最大限度的继承PyTorch框架动态图的特性。2.最大限度的继承原生PyTorch上的使用方式,可以使用户在移植到异腾A处理器设备上时,在开发方式和代码重用方面做到最小的改动。3.最大限度的继承PyTorch原生的体系结构,保留框架本身出色的特性,比如自动微分,动态分发。Debug.Profiling. Storage共享机制以及设备侧的动态内存管理等。4.扩展性好。在打通流程的通路之上,对于新增的网络类型或结构,只需涉及相关计算类算子的开发和实现。框架类算子,反向图建立和实现机制等结构可保持复用。硬件架构:                                                                         其中Cube:仅支持matmul相关操作,包括addmm、matmul. conv2d等, 相关layer包括Conv2d、Linear等;仅支持5HD,输入仅支持FP16 。Vector Untit:相对较为通用的计算单元,支持FP32,FP16, INT32,INT8;并非所有Vector算子都支持5HD,此时需要转化为ND或NCHW。软件架构:名称描述CANN统的异构计算架构,提供了计算能力PTAdapter使yTorch适配界腾AI处理器系列的软件包DriverFinsare驱动包和固件包A+X(Ascend+X86)异腾卡+ X86 CPU的服务器形态A+K(Ascend-KunPeng(ARD) 9 Huawei Confidential异腾卡 +鯤鹏CPU的服务器形态Pytorch安装:可参考https://www.hiascend.com/software/ai-frameworks前提条件:1.已完成CANN开发或运行环境的安装,确保相应os依赖(如python, numpy等)已安装完成.2.需确保CMake >= 3.12.0, gcc>= 7.3.03.建议用户直接在安装环境中进行编译。如果在其他环境中编译,需要编译环境和安装环境的OS版本,依赖版本保持致。安装流程:以root或非root用户登录服务器安装PyTorch依赖环境:pip3 install pyyaml ;pip3 install wheel获取PyTorch源代码:获取适配昇腾AI处理器的PyTorch源代码;进入“pytorch“目录,并获取原生PyTorch源代;进入原生pytorch代码目录“pytorch“,并获取PyTorch被动依赖代码编译生成适配昇腾AI处理器的PyTorch安装包:进入“pytorch/scripts“文件夹,执行转换脚本,生成适配昇腾AI处理器的全量代码;进入适配后的全量代码目录,即“pytorch/pytorch“目录,编译生成pytorch的二进制安装包安装PyTorch:pip3 install --upgrade torch-1.5.0+ascend-cp37-cp37m-linux_{arch}.whl配置环境变量:安装完软件包后,需要配置环境变量才能正常使用昇腾PyTorch。建议构建启动脚本,构建set_env.sh脚本,使用source set_env.sh配置当前窗口的环境变量。Pytorch模型迁移指导:主要分为以下步骤:迁移前的准备工作;单P模型迁移;多P模型迁移;报错排除;关于分布式:由于NPU上的一些限制,PyTorch需要使用DistributedDataPallel(DDP), 若原始代码使用的是Datarallel(DP)則需要修改カDDP, DP相应的-些实现例如torch.cuda .common,則可以替换为torch.distributed相关操作关于混合精度:由于NPU天然的混合精度属性,我仞需要使用apex対原始代磆迸行修改                                     单P代码迁移的主要修改点:设备从cuda切换至npu多P代码迁移的主要修改点:nccl>hccl:报错排查主要分三种:debug打点;debug hook;debug host日志;根据自身的情况选择;Pytorch模型调优:模型性能优化以及模型精度优化模型性能优:使用Pytorch profiling工具获取chrome_trace文件打开chrome_trace文件  输入"chorme:/tracing/" ;将trace文件拖入浏览器即可通过对比不同设备的prof图,可以快速定位到性能的差距使用CANN Profiling工具性能优化五板斧:1.使用NpuFusefSGD/NpuFusedAdam,使用combine_grad2.使用taskset绑核起任务(适用A+K服务器)3.同比例增大BS和LR,充分利用npu资源4.使用NPU亲和库函数替代原生函数,提升模型性能5. AutoTune(适用特殊网络)模型精度优化:优化三板斧:1.若精度无法对齐,仅差少量几个点,可以调小loss_scale再试试2.若精度波动较大收敛慢,可以少量调小LR试试3.若train精度正常eval精度カ0或较低,剣代先排査在eval时是否正确执行了model.eval()
  • [主题讨论] 【一周AI资讯】20210917:华人学生团队获国际神经网络验证大赛佳绩:总分第一,五大单项第一
    盘点本周AI科技热点热点一:MIT给激光雕刻机安上AI,自动辨别材料确定雕刻力度,准确率达98%MIT最近发表了一项有意思的研究:激光雕刻机装上AI,混合材料T恤上都能雕出花,自动变换力度保证不割破他们给现有的激光雕刻机安上了一个AI,就可以自动识别30种不同的切割材料,准确率高达98%。不仅告诉你是啥,还能告诉你切割/雕刻所需的力度、速度。当然,如果这是一种危险材料,直接就把一个大大的“Caution”甩给你。这样一来,就能免去对一些人为识别失误造成的危险(尤其是一些未贴/贴错名称标签的材料),比如冒个有毒烟雾什么的,以及切割力度不对破坏材料造成的浪费。原文链接:https://www.qbitai.com/2021/09/28675.html 热点二:华人物理学家叶军斩获基础物理学突破奖,他的钟150亿年不差一秒近日,科学突破奖基金会及其创始赞助商宣布了第十届科学突破奖的获奖者。其中,华人物理学家叶军和日本物理学家香取秀俊拿到了基础物理学突破奖,他们的研究成果光晶格钟运行 150 亿年误差也不到 1 秒,对于探测引力波、寻找暗物质、验证相对论都有重要作用。科学突破奖(Breakthrough Prize),又被誉为「科学界的奥斯卡」,现已进入第十个年头。该奖项于 2012 年由俄罗斯亿万富翁尤里 · 米尔纳夫妇设立,现由谷歌联合创始人谢尔盖 · 布林、Facebook 联合创始人马克 · 扎克伯格夫妇、腾讯公司联合创始人马化腾、尤里 · 米尔纳夫妇,以及基因技术公司 23andMe 联合创始人安妮 · 沃西基等知名实业家赞助。原文链接:https://www.jiqizhixin.com/articles/2021-09-11-4 热点三:华人学生团队获国际神经网络验证大赛佳绩:总分第一,五大单项第一由来自卡内基梅隆大学、美国东北大学、哥伦比亚大学、加州大学洛杉矶分校的成员共同开发的工具α,β-CROWN 获得了第二届国际神经网络验证大赛总分第一,以及 5 个单项第一!其中该团队的学生作者均为华人。近日,一年一度的国际神经网络验证大赛VNN-COMP落下帷幕。由来自卡内基梅隆大学(CMU)、美国东北大学、哥伦比亚大学、加州大学洛杉矶分校(UCLA)的成员共同研发的工具α,β-CROWN获得了第二届国际神经网络验证大赛总分第一,比分大幅度领先。该工具由华人学者张欢(CMU)、许凯第(东北大学)和王世褀(哥伦比亚大学)带领的团队开发。本文中,我们将介绍神经网络验证的基本问题、国际神经网络验证大赛的背景和本次竞赛获胜算法 α,β-CROWN。神经网络已经成为了现代人工智能中非常重要的元素。然而由于其复杂性,神经网络常常被视为「黑盒」,因为我们很难精确的刻画神经网络所表达的函数。例如,对抗样本 (adversarial examples) 是神经网络中的一个常见的问题:当在神经网络的输入中加入少量对抗扰动时,神经网络的输出可能产生错误的改变,比如将物体识为和输入毫不相关的类。这对于把神经网络应用到对安全性、鲁棒性要求较高的应用中提出了很大的挑战。原文链接:https://www.jiqizhixin.com/articles/2021-09-12-2 热点四:SIGKDD2021 | 中科大利用神经网络和端到端训练框架,探究教育情境对学生能力的影响情境信息或者说上下文信息目前在信息检索相关领域(如推荐系统,web 搜索,广告等)有着非常广泛的应用,它们反映着一个心理学的通识:情境信息往往通过影响人的内在特质来影响人的外在表现。如推荐系统中,情境信息通过影响用户的内在偏好,从而引导用户的消费行为。而在教育领域,教育情境信息则影响着学生的知识状态,进而反映在学生的练习作答结果中。教育情境信息在传统教育学中讨论已久,它们主要延续着实证研究的思路(提出假设 - 收集数据 - 实验分析 - 得出结论),先获取学生的得分或者能力作为衡量标准,再使用主成分分析、线性回归等方法对教育情境信息的作用进行分析。其中学生得分可比要求学生所做练习相同,因此在大规模的情境信息分析中,往往采用基于传统认知诊断理论得到的学生能力作为衡量的方式。认知诊断研究可以追溯到教育心理学领域,代表性的工作有项目反映理论(Item Response Theory,IRT)。近年来,随着人工智能以及智慧教育的兴起,作为智慧教育应用的基础任务之一,基于机器学习、深度学习的认知诊断方法被广泛研究,其中经典的工作有将项目反映理论拓展的多维项目反映理论(Multidimensional Item Response Theory,MIRT),使用神经网络学习认知函数的神经认知诊断框架(Neural Cognitive Diagnosis,NeuralCD)。然而,目前认知诊断的工作往往只关注于试题相关信息(如试题知识点矩阵、知识点的关系、试题文本等)的挖掘,对于学生学习过程相关的教育情境信息则关注很少。原文链接:https://www.jiqizhixin.com/articles/2021-09-14-10 热点五:视觉-语言表征学习新进展:提词优化器「琥珀」带你用好CLIP你是否还在为设计 CLIP 模型的提词器(prompt)而烦恼?到底是「a photo of a [class]」还是「a [class] photo」?对于特定任务(例如食物分类或是卫星图像识别),如何添加符合语境的上下文(context)?本文提出的提词优化器 CoOp(中文名:琥珀)能够给你答案。结合视觉和语言的预训练方法(Vision-Language Pretraining)最近成为视觉表征学习一种有前景的方向。不同于使用图像和离散标签进行学习的传统分类器,以 CLIP 为代表的视觉语言预训练模型利用了两个独立的编码器来对齐图像和原始文本。在这种范式下,监督来源变得更加灵活多样且容易获取(如图片评论或网络配图文案都可以做图片监督)。更重要的是,模型变得十分容易零样本(zero-shot)迁移到下游任务。这是因为下游任务的类别不必一定属于训练中离散标签的一种。只要提供下游任务的标签信息,通过适当提词器(prompt)生成的文本向量可以直接代替固定的离散标签。下图展示了 CLIP 模型的结构。原文链接:https://www.jiqizhixin.com/articles/2021-09-15-3 热点六: 北大数院校友最新成果登数学四大顶刊,偏微分方程突破,可用于W-GAN,现已回国任教中科大数学界神秘的偏微分方程领域,再次被突破了!来自中科大的陈世炳教授等人,开发了一套全新的数学方法,直接打破了领域内专家20多年来的既有认知。相关论文已被数学四大顶刊之一《数学年刊》接受,将在接下来的某一期正式发表。北大数院校友成果登数学四大顶刊,偏微分方程突破,可用于W-GAN这篇论文突破了一个关键的非线性偏微分方程,它与我们机器学习中熟悉的最优传输理论息息相关。最优传输理论,类似“找出把物品从A运到B的最佳方法”,用几何方法来衡量概率分布的距离、给概率分布建模。像机器学习中的W-GAN,就属于最优传输问题。让丘成桐院士1982年获菲尔茨奖的卡拉比猜想证明,就与这个方程相关。2018年的菲尔茨奖,再次颁给了在这个方程、以及最优传输问题上做出贡献的Alessio Figalli。究竟是什么方程如此关键,这次数学家们又做出了什么重要突破?一起来看看。原文链接:https://www.qbitai.com/2021/09/28283.html 热点七:TIOBE 9 月榜单:Python 和 C 之间差距仅剩 0.16%Python 以前所未有的姿态接近 TIOBE 指数的第一位置。TIOBE CEO Paul Jansen 指出,Python 只要再上涨 0.16% 就可以超越 C 跃升至榜单第一,且这一情况随时可能发生。“如果 Python 成为第一,其在 TIOBE 指数中就达到了一个新的里程碑。截至目前,只有另外两种语言曾经领先,即 C 和 Java。让我们看看下个月会发生什么。” 此外,这个月还有一些其他的有趣变化:汇编从第 9 位上升到第 8 位、Ruby 从第 15 位上升到第 13 位、Go 上升了 4 位 — 从第 18 位上升到第 14 位。原文链接:https://www.oschina.net/news/159955/tiobe-index-202109总结:每周七个小热点,帮助各位了解最新科技资讯。欢迎大家阅览评论哦,也可以留言发表您的关注点,我们根据大家的关注点,推送更多您喜欢的资讯。
  • [其他] 深度学习的应用
    计算机视觉香港中文大学的多媒体实验室是最早应用深度学习进行计算机视觉研究的华人团队。在世界级人工智能竞赛LFW(大规模人脸识别竞赛)上,该实验室曾力压FaceBook夺得冠军,使得人工智能在该领域的识别能力首次超越真人。语音识别微软研究人员通过与hinton合作,首先将RBM和DBN引入到语音识别声学模型训练中,并且在大词汇量语音识别系统中获得巨大成功,使得语音识别的错误率相对减低30%。但是,DNN还没有有效的并行快速算法,很多研究机构都是在利用大规模数据语料通过GPU平台提高DNN声学模型的训练效率。在国际上,IBM、google等公司都快速进行了DNN语音识别的研究,并且速度飞快。 国内方面,阿里巴巴、科大讯飞、百度、中科院自动化所等公司或研究单位,也在进行深度学习在语音识别上的研究。自然语言处理等其他领域很多机构在开展研究,2013年,Tomas Mikolov,Kai Chen,Greg Corrado,Jeffrey Dean发表论文Efficient Estimation of Word Representations in Vector Space建立word2vector模型,与传统的词袋模型(bag of words)相比,word2vector能够更好地表达语法信息。深度学习在自然语言处理等领域主要应用于机器翻译以及语义挖掘等方面。
  • [其他] 深度学习训练过程
    深度学习训练过程语音2006年,Hinton提出了在非监督数据上建立多层神经网络的一个有效方法,具体分为两步:首先逐层构建单层神经元,这样每次都是训练一个单层网络;当所有层训练完后,使用wake-sleep算法进行调优。将除最顶层的其他层间的权重变为双向的,这样最顶层仍然是一个单层神经网络,而其他层则变为了图模型。向上的权重用于“认知”,向下的权重用于“生成”。然后使用wake-sleep算法调整所有的权重。让认知和生成达成一致,也就是保证生成的最顶层表示能够尽可能正确的复原底层的节点。比如顶层的一个节点表示人脸,那么所有人脸的图像应该激活这个节点,并且这个结果向下生成的图像应该能够表现为一个大概的人脸图像。wake-sleep算法分为醒( wake)和睡(sleep)两个部分。wake阶段:认知过程,通过外界的特征和向上的权重产生每一层的抽象表示,并且使用梯度下降修改层间的下行权重。sleep阶段:生成过程,通过顶层表示和向下权重,生成底层的状态,同时修改层间向上的权重。自下上升的非监督学习就是从底层开始,一层一层地往顶层训练。采用无标定数据(有标定数据也可)分层训练各层参数,这一步可以看作是一个无监督训练过程,这也是和传统神经网络区别最大的部分,可以看作是特征学习过程。具体的,先用无标定数据训练第一层,训练时先学习第一层的参数,这层可以看作是得到一个使得输出和输入差别最小的三层神经网络的隐层,由于模型容量的限制以及稀疏性约束,使得得到的模型能够学习到数据本身的结构,从而得到比输入更具有表示能力的特征;在学习得到n-l层后,将n-l层的输出作为第n层的输入,训练第n层,由此分别得到各层的参数。自顶向下的监督学习就是通过带标签的数据去训练,误差自顶向下传输,对网络进行微调。基于第一步得到的各层参数进一步优调整个多层模型的参数,这一步是一个有监督训练过程。第一步类似神经网络的随机初始化初值过程,由于第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果。所以深度学习的良好效果在很大程度上归功于第一步的特征学习的过程。
  • [其他] 科学工程 - 线性代数
    分支  线性代数作为数学的一个分支,广泛应用于科学和工程中。离散数学  然而,因为线性代数主要是面向连续数学,而非离散数学,所以很多计算机科学家很少接触它。算法  掌握好线性代数对于理解和从事机器学习算法相关工作是很有必要的,尤其对于深度学习算法而言。深度学习  因此,在开始介绍深度学习之前,我们集中探讨一些必备的线性代数知识。跳过  如果你已经很熟悉线性代数,那么可以轻松地跳过。概念  如果你已经了解这些概念,但是需要一份索引表来回顾一些重要公式,那么我们推荐\emph{The Matrix Cookbook} {cite?}。文献  如果你没有接触过线性代数,那么本章将告诉你本书所需的线性代数知识,不过我们仍然非常建议你参考其他专门讲解线性代数的文献,例如~{shilov1977linear}。知识  最后,本章略去了很多重要但是对于理解深度学习非必需的线性代数知识。
  • [其他] 机器学习 基础
    分析  因为各种媒体宣传,最近问问学校新入学计算机科学的学生们,想搞什么研究,结果十个里有九个要研究机器学习,中间还一些弄不清深度学习和机器学习的关系,实际上是想搞深度学习。  原本深度学习(深度神经网络)只是机器学习领域一个分支,但因为其最近大火,导致对整个领域出现了这样的划分:深度的和非深度,或者说深度的和传统的。虽然现在自然语言处理研究主要用深度学习,但因为很多概念来自机器学习,还是有必要了解传统机器学习的。而且如最近周志华提出的深度森林,将其他传统机器学习方法和深度学习的理念结合起来,就可以提出一些很有意思的模型。入门  最开始想简单了解一下,那么第一步,可以只将 Goodfellow 的 Deep Learning 前面介绍小节读一下,第四小节的 Numerical Computations 以及第五小节的 Machine Learning Basics. 主要会介绍简单的数值运算,梯度更新,还有机器学习基本概念,但没怎么提太详细。  之后就是鼎鼎有名吴教授在 Cousera 上的 Machine Learning。这门课没太多说的,太有名了。一如吴教授的风格,简单易懂,练习也不难,相信网上也都能找到答案。有点麻烦的是,作业是用 Octave 来完成,当然因为 Octave 和 MATLAB的关系,用MATLAB 也是可以的。里面有些东西挺老的,但核心概念都很有用,特别是模型训练策略,错误分析。基础  接着,可以读读我挺喜欢的 NLP 大佬 Kyunghyun Cho 的 ML w/o DL Lecture Notes (没有深度学习的机器学习课堂笔记)。介绍了机器学习中经典的一些问题,比如分类,回归,还有聚类,还提到各自的一些算法以及与深度学习的一些联系。值得一提的是,该资料带有 Jupyter Notebook 的习题作业,所以很推荐把这些作业也做了,可以打下很好的基础。但这个资料介绍不太全面,而且没有课程视频。  还有一个额外的资源是,加州理工 Yaser Abu-Mostafa 的 Learning From Data,这个没上过,也不好评价。但是根据其他评价是门很棒的课。  中文资料,可以读李航的《统计学习方法》还有周志华的《机器学习》,两本都不是太难读。进阶  了解了基础,如果还想挑战自己,可以试试卡内基梅隆大学,Tom Mitchell 教授的 Machine Learning 课程。相比之前的资料,这门课涉及到很多更深入的话题,概率图模型,Boosting,SVM的核方法,强化学习...
  • [其他] 深度学习 - 图像检索
    一  随着深度学习的引入,基于深度学习的图像检索技术,主要是将深度学习方法应用在图像检索中的特征提取模块,利用卷积神经网络提取图片特征。二  主要步骤即给定一张图片,通过卷积神经网络对图片进行特征提取得到表征图片的特征,利用度量学习方法如欧式距离对图片特征进行计算距离。三  对图片距离进行排序,得到初级检索结果,再根据图片数据的上下文信息和流形结构对图像检索结果进行重排序,从而提高图像检索准确率,得到最终的检索结果。
  • [其他] 人脸识别算法介绍 - 局部二值模式
    一  局部二值模式(Local binary patterns LBP)是计算机视觉领域里用于分类的视觉算子。二  LBP,一种用来描述图像纹理特征的算子,该算子由芬兰奥卢大学的T.Ojala等人在1996年提出。。三  2002年,T.Ojala等人在PAMI上又发表了一篇关于LBP的文章非常清楚的阐述了多分辨率、灰度尺度不变和旋转不变、等价模式的改进的LBP特征。四  LBP的核心思想就是:以中心像素的灰度值作为阈值,与他的领域相比较得到相对应的二进制码来表示局部纹理特征。五  LBP是提取局部特征作为判别依据的。六  LBP方法显著的优点是对光照不敏感,但是依然没有解决姿态和表情的问题。七  不过相比于特征脸方法,LBP的识别率已经有了很大的提升。
  • [其他] 人工智能走向深度学习
      据介绍,人工智能比较大的挑战之一是识别度不高、准确度不高,提高准确度就要提高模型的规模和精细度,提高线下训练的频次,这需要更强的计算力。当前随着人工智能算法模型的复杂度和精度愈来愈高,互联网和物联网产生的数据呈几何倍数增长,在数据量和算法模型的双层叠加下,人工智能对计算的需求越来越大。   “2016年3月,谷歌人工智能阿尔法围棋(AlphaGo)战胜韩国棋手李世石时,人们慨叹人工智能的强大,而其背后巨大的‘付出’却鲜为人知——数千台服务器、上千块CPU、高性能显卡以及对弈一场棋所消耗的惊人电量。”远望智库人工智能事业部部长、图灵机器人首席战略官谭茗洲在接受科技日报记者采访时表示。   “相比云计算和大数据等应用,人工智能对计算力的需求几乎无止境。”中国工程院院士、浪潮集团首席科学家王恩东也指出。   据介绍,人工智能比较大的挑战之一是识别度不高、准确度不高,提高准确度就要提高模型的规模和精细度,提高线下训练的频次,这需要更强的计算力。   当前随着人工智能算法模型的复杂度和精度愈来愈高,互联网和物联网产生的数据呈几何倍数增长,在数据量和算法模型的双层叠加下,人工智能对计算的需求越来越大。   从中国信息通信研究院王蕴韬在通信世界网发表的文章了解,人工智能基础设施建设重要一方面是继续夯实通用算力基础。  当前算力供给已经无法满足智能化社会构建,根据OpenAI统计,从2012年至2019年,随着深度学习“大深多”模型的演进,模型计算所需计算量已经增长30万倍,无论是计算机视觉还是自然语言处理,由于预训练模型的广泛使用,模型所需算力直接呈现阶跃式发展。   据斯坦福《AIINDEX2019》报告,2012年之前,人工智能的计算速度紧追摩尔定律,算力需求每两年翻一番,2012年以后,算力需求的翻番时长则直接缩短为3、4个月。  面对已经每过20年才能翻一番的通用计算供给能力,算力捉襟见肘已经不言而喻。   无疑,人工智能走向深度学习,计算力已成为评价人工智能研究成本的重要指标。   未来如何解决算力难题,据科技日报报道,目前计算存储一体化正在助力、推动算法升级,成为下一代AI系统的入口。  存内计算提供的大规模更高效的算力,使得AI算法设计有更充分的想象力,不再受到算力约束。从而将硬件上的先进性,升级为系统、算法的领先优势,最终加速孵化新业务。   而除了计算存储一体化的趋势,量子计算或是解决AI所需巨额算力的另一途径。  目前量子计算机的发展已经超越传统计算机的摩尔定律,以传统计算机的计算能力为基本参考,量子计算机的算力正迅速发展。
  • [其他] 机器学习的方法论
      在深度学习中,经常有“end-to-end(端到端)”学习的提法,与之相对应的传统机器学习是“Divide and Conquer(分而治之)”。这些都是什么意思呢?    “end-to-end”(端到端)说的是,输入的是原始数据(始端),然后输出的直接就是最终目标(末端),中间过程不可知,因此也难以知。比如说,基于深度学习的图像识别系统,输入端是图片的像素数据,而输出端直接就是或猫或狗的判定。这个端到端就是:像素-->判定。    再比如说,“end-to-end”的自动驾驶系统,输入的是前置摄像头的视频信号(其实也就是像素),而输出的直接就是控制车辆行驶指令(方向盘的旋转角度)。这个端到端就是:像素-->指令。    就此,有人批评深度学习就是一个黑箱(Black Box)系统,其性能很好,却不知道为何而好,也就是说,缺乏解释性。其实,这是由于深度学习所处的知识象限决定的。从图1可以看出,深度学习,在本质上,属于可统计不可推理的范畴。“可统计”是很容易理解的,就是说,对于同类数据,它具有一定的统计规律,这是一切统计学习的基本假设。那“不可推理”又是什么概念?其实就是“剪不断、理还乱”的非线性状态了。    在哲学上讲,这种非线性状态,是具备了整体性的“复杂系统”,属于复杂性科学范畴。复杂性科学认为,构成复杂系统的各个要素,自成体系,但阡陌纵横,其内部结构难以分割。简单来说,对于复杂系统,1+1≠2,也就是说,一个简单系统,加上另外一个简单系统,其效果绝不是两个系统的简单累加效应,而可能是大于部分之和。因此,我们必须从整体上认识这样的复杂系统。于是,在认知上,就有了从一个系统或状态(end)直接整体变迁到另外一个系统或状态(end)的形态。这就是深度学习背后的方法论。    与之对应的是“Divide and Conquer(分而治之)”,其理念正好相反,在哲学它属于“还原主义(reductionism,或称还原论)”。在这种方法论中,有一种“追本溯源”的蕴意包含其内,即一个系统(或理论)无论多复杂,都可以分解、分解、再分解,直到能够还原到逻辑原点。    在意象上,还原主义就是“1+1=2”,也就是说,一个复杂的系统,都可以由简单的系统简单叠加而成(可以理解为线性系统),如果各个简单系统的问题解决了,那么整体的问题也就得以解决。比如说,很多的经典力学问题,不论形式有多复杂,通过不断的分解和还原,最后都可以通过牛顿的三大定律得以解决。经典机器学习(位于第Ⅱ象限),在哲学上,在某种程度上,就可归属于还原主义。传统的机器学习方式,通常是用人类的先验知识,把原始数据预处理成各种特征(feature),然后对特征进行分类。    然而,这种分类的效果,高度取决于特征选取的好坏。传统的机器学习专家们,把大部分时间都花在如何寻找更加合适的特征上。因此,早期的机器学习专家们非常苦逼,故此,传统的机器学习,其实可以有个更合适的称呼——特征工程(feature engineering)。    但这种苦逼,也是有好处的。这是因为,这些特征是由人找出来的,自然也就为人所能理解,性能好坏,机器学习专家们可以“冷暖自知”,灵活调整。
  • [其他] 机器学习 概述
      机器学习(Machine Learning,ML) 是使用计算机来彰显数据背后的真实含义,它为了把无序的数据转换成有用的信息。是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。  它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。  海量的数据  获取有用的信息机器学习 研究意义  机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。  “机器学习是对能通过经验自动改进的计算机算法的研究”。     “机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。”  一种经常引用的英文定义是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.  机器学习已经有了十分广泛的应用,例如:数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别、战略游戏和机器人运用。机器学习 场景例如:识别动物猫模式识别(官方标准):人们通过大量的经验,得到结论,从而判断它就是猫。机器学习(数据学习):人们通过阅读进行学习,观察它会叫、小眼睛、两只耳朵、四条腿、一条尾巴,得到结论,从而判断它就是猫。深度学习(深入数据):人们通过深入了解它,发现它会'喵喵'的叫、与同类的猫科动物很类似,得到结论,从而判断它就是猫。(深度学习常用领域:语音识别、图像识别)模式识别(pattern recognition): 模式识别是最古老的(作为一个术语而言,可以说是很过时的)。我们把环境与客体统称为“模式”,识别是对模式的一种认知,是如何让一个计算机程序去做一些看起来很“智能”的事情。通过融于智慧和直觉后,通过构建程序,识别一些事物,而不是人,例如: 识别数字。机器学习(machine learning): 机器学习是最基础的(当下初创公司和研究实验室的热点领域之一)。在90年代初,人们开始意识到一种可以更有效地构建模式识别算法的方法,那就是用数据(可以通过廉价劳动力采集获得)去替换专家(具有很多图像方面知识的人)。“机器学习”强调的是,在给计算机程序(或者机器)输入一些数据后,它必须做一些事情,那就是学习这些数据,而这个学习的步骤是明确的。机器学习(Machine Learning)是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身性能的学科。深度学习(deep learning): 深度学习是非常崭新和有影响力的前沿领域,我们甚至不会去思考-后深度学习时代。深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。
  • [其他] 上溢 和 下溢
      连续数学在数字计算机上的根本困难是,我们需要通过有限数量的位模式来表示无限多的实数。 这意味着我们在计算机中表示实数时,几乎总会引入一些近似误差。 在许多情况下,这仅仅是舍入误差。 舍入误差会导致一些问题,特别是当许多操作复合时,即使是理论上可行的算法,如果在设计时没有考虑最小化舍入误差的累积,在实践时也可能会导致算法失效。  一种极具毁灭性的舍入误差是下溢。 当接近零的数被四舍五入为零时发生下溢。 许多函数在其参数为零而不是一个很小的正数时才会表现出质的不同。 例如,我们通常要避免被零除(一些软件环境将在这种情况下抛出异常,有些会返回一个非数字(not-a-number, NaN)的占位符)或避免取零的对数(这通常被视为$-\infty$,进一步的算术运算会使其变成非数字)。  另一个极具破坏力的数值错误形式是上溢。 当大量级的数被近似为$\infty$或$-\infty$时发生上溢。 进一步的运算通常会导致这些无限值变为非数字。  必须对上溢和下溢进行数值稳定的一个例子是softmax函数。 softmax函数经常用于预测与~Multinoulli分布相关联的概率,定义为 \begin{align} \text{softmax}(\Vx)i = \frac{\exp(\Sx_i)}{\sum{j=1}^n \exp(\Sx_j)} . \end{align} 考虑一下当所有$\Sx_i$都等于某个常数$\Sc$时会发生什么。 从理论分析上说,我们可以发现所有的输出都应该为$\frac{1}{n}$。 从数值计算上说,当$\Sc$量级很大时,这可能不会发生。 如果$\Sc$是很小的负数,$\exp(c)$就会下溢。 这意味着~softmax函数的分母会变成0,所以最后的结果是未定义的。 当$\Sc$是非常大的正数时,$\exp(c)$的上溢再次导致整个表达式未定义。 这两个困难能通过计算$\text{softmax}(\Vz)$同时解决,其中$\Vz = \Vx - \max_i \Sx_i$。 简单的代数计算表明,$\text{softmax}$解析上的函数值不会因为从输入向量减去或加上标量而改变。 减去$\max_i x_i$导致$\exp$的最大参数为$0$,这排除了上溢的可能性。 同样地,分母中至少有一个值为1的项,这就排除了因分母下溢而导致被零除的可能性。  还有一个小问题。 分子中的下溢仍可以导致整体表达式被计算为零。 这意味着,如果我们在计算$\log ~\text{softmax}(\Vx)$时,先计算$\text{softmax}$再把结果传给$\log$函数,会错误地得到$-\infty$。 相反,我们必须实现一个单独的函数,并以数值稳定的方式计算$\log \text{softmax}$。 我们可以使用相同的技巧来稳定$\log \text{softmax}$函数。  在大多数情况下,我们没有明确地对本书描述的各种算法所涉及的数值考虑进行详细说明。 底层库的开发者在实现深度学习算法时应该牢记数值问题。 本书的大多数读者可以简单地依赖保证数值稳定的底层库。 在某些情况下,我们有可能在实现一个新的算法时自动保持数值稳定。 Theano~{cite?}就是这样软件包的一个例子,它能自动检测并稳定深度学习中许多常见的数值不稳定的表达式。
  • [行业动态] 5 至 8 层人工神经元才能达到单个生物神经元的复杂度
    人工神经元和生物神经元之间最基本的比较是它们如何处理传入的信息。这两种神经元都接收传入信号,并根据输入信息决定是否将信号发送给其他神经元。虽然人工神经元依赖简单的计算做出决定,但数十年的研究表明,生物神经元的这个过程要复杂得多。计算神经科学家使用输入 - 输出函数来模拟生物神经元树突接收到的输入与神经元发出信号之间的关系。研究者让一个人工深度神经网络模仿输入 - 输出函数(生物神经元树突接收到的输入与神经元发出信号之间的关系),以确定其复杂性。他们首先对一种神经元的输入 - 输出函数进行了大规模模拟,这种神经元的顶部和底部有不同的树突分支,称为锥体神经元,来自大鼠的皮层。然后,他们将模拟结果输入到一个深度神经网络中,该神经网络每层最多有 256 个人工神经元。接着,他们不断的增加层数,直到在模拟神经元的输入和输出之间达到毫秒级别 99% 的准确率。深度神经网络成功地预测了神经元的输入 - 输出函数的行为,所使用的层数至少有 5 层,但不超过 8 层。在大多数网络中,这相当于 1000 个人工神经元对应一个生物神经元。如下图 2 所示,具有 7 个隐藏层、每层包含 128 个特征图的时间卷积网络(TCN)忠实地捕获了一个 L5PC (layer 5 pyramidal neuron)模型。在下图 3 中,研究者展示了没有 N - 甲基天冬氨酸(NMDA)突触的 L5PC 神经元,它能够被具有单个隐藏层(包含 128 个隐藏单元)的深度神经网络忠实地捕获。其中 A 为 L5PC 模型示意图、B 为类比的深度神经网络。现在已经了解了单个神经元的计算复杂度,如下动图所示,左边的椎体神经元依赖树突状的分支,这些分支会受到信号的影响。在神经元决定是否发送 spike 信号之前,信号变化会导致局部电压变化,表现为神经元颜色的变化(红色表示高电压,蓝色表示低电压)。这一 spike 出现了 3 次,如右侧单个分支的轨迹所示,颜色代表树突从顶部(红色)到底部(蓝色)的位置。来自贝勒医学院的计算神经科学家 Andreas Tolias 表示,这种结果建立了从生物神经元到人工神经元的桥梁。但研究者表示,这还不是一个直接的对应关系(生物神经元到人工神经元)。Michael London 认为「神经网络中的层数与网络的复杂性之间的关系并不明显,所以我们不能说网络层数从四层增加到五层复杂度会增加多少。我们也不能说需要 1,000 个人工神经元就意味着生物神经元的复杂度恰好是生物神经元的 1,000 倍。最终,即使在每一层中使用指数级的人工神经元,最终也有可能形成只有一层的深层神经网络——但这可能需要更多的数据和时间来让算法学习。」研究者尝试了很多架构,几乎都失败了。他们还公开了代码,以鼓励其他研究人员找到更少层的解决方案。但是,找到一种能够模仿神经元且准确率高达 99% 的深度神经网络是非常困难,研究者相信他们的结果为进一步的研究提供了有意义的比较。Timothy  Lillicrap 认为,这可能提供了一种新的方法,将图像分类网络(通常需要 50 层以上)与大脑联系起来。如果每个生物神经元都像一个五层人工神经网络,那么一个 50 层的图像分类网络可能相当于一个生物网络中的 10 个真实神经元。此外,该研究还希望他们的结果将改变 SOTA 人工智能深度网络架构。「我们呼吁替换深度网络技术,使其工作方式更接近大脑,这一实现过程是将深度网络中的每个简单单元替换为代表神经元单元,而这种神经元单元本身就是有深度的,」Segev 表示。在这种替代方案中,AI 研究人员和工程师可以插入一个五层深度网络作为「迷你网络」,用来取代每一个人工神经元。
  • [其他] 一个神经元顶5到8层神经网络,深度学习的计算复杂度被生物碾压了
    来自耶路撒冷希伯来大学的研究者对单个神经元的计算复杂度进行了研究,他们通过训练人工深度神经网络来模拟生物神经元的计算,得出深度神经网络需要 5 至 8 层互连神经元才能表征(或达到)单个生物神经元的复杂度。人类糊状的大脑似乎与计算机处理器中的固态硅芯片相去甚远,但科学家将二者进行比较已经有很多年的历史。正如「人工智能之父」阿兰 · 图灵在 1952 年所说,「我们对大脑具有冷粥粘稠度这一事实不感兴趣。」换句话说,介质不重要,重要的是计算能力。当前,最强大的 AI 系统采用机器学习的一个分支——深度学习,这些 AI 系统的算法通过处理互连节点隐藏层的大量数据来学习,这被称为深度神经网络。顾名思义,深度神经网络受到了人类大脑中真实神经网络的启发,它们的节点模拟真实神经元。或者至少根据 1950 年代神经科学家对神经元的了解,当时一个被称作「感知器」的有影响力的神经元模型已经诞生了。自那时起,我们对单个神经元的计算复杂度的理解急剧增加,也清楚了生物神经元要比人工神经元更加复杂。但复杂多少呢?这个问题一直没有明确的解答。为了找出答案,耶路撒冷希伯来大学的计算神经科学博士生 David Beniaguev、神经科学教授 Idan Segev 和副教授 Michael London 训练了一个人工深度神经网络来模拟生物神经元的计算。他们表示,一个深度神经网络需要 5 至 8 层互连神经元才能表征(或达到)单个生物神经元的复杂度。作者们也没有预料到会呈现出这种复杂度。一作 Beniaguev 表示:「我原以为生物神经元会更简单些,3 至 4 层人工神经元就足以捕获细胞内执行的计算。」 从左至右依次为耶路撒冷希伯来大学博士生 David Beniaguev、神经科学教授 Idan Segev 和副教授 Michael London。他们还发表了相关论文《Single Cortical Neurons as Deep Artificial Neural Networks》。论文地址:https://www.sciencedirect.com/science/article/abs/pii/S0896627321005018 转发自https://www.jiqizhixin.com/articles/2021-09-03-6
总条数:727 到第
上滑加载中