demi的博客

神经网络从被人忽悠到忽悠人(一)

很早的时候就想写几篇关于人工智能的东西,把人工智能的东西写的通俗易懂点,但是毕竟人工智能的东西涉及的领域太广了,特别是对数学和概率有比较深的理解,如果只是想简单的了解,可以跳过文章的公式。

很难想象有什么事物会像廉价、强大、无处不在的人工智能那样拥有“改变一切”的力量。《必然》

前段时间的AlphaGo再次的把人工智能炒的火热,关于人工智能的讨论又再次进入讨论的风口浪尖上。各个方面对AlphaGo技术的猜测,神经网络也再次成为了技术的焦点。

一个看似简单的问题

给你一堆的图片,从图片中分出是猫,狗。归结成一个大问题:分类。本身来说,分类对计算机来说本该是最擅长的,本身0和1,就是很好的分类,编程语言的if else,swich,可以做到很好的分类。

像if else这种做法,似乎我们可以编写一套复杂的规则,这个规则覆盖所有的情况,就能够进行准确的分类了。但是这条路是走不通的,之前的自然语言处理就走过这条路。需要另外的选择一条出路。对,建模。通过模型来进行分类。

机器学习中的损失函数

作者: 张俊红

在机器学习中,同一个数据集可能训练出多个模型即多个函数(如下图所示,同样的数据集训练出三种不同的函数),那么我们在众多函数中该选择哪个函数呢?首选肯定是那个预测能力较好的模型,那么什么样的函数/模型就是预测好的呢?有没有什么评判标准?

机器学习中的损失函数

损失函数和风险函数

前面说过我们应该首选那个预测能力较好的模型,那么该怎么判断预测能力的好坏呢?模型是用来做预测的,那么好的模型肯定是准确率较高的,也就是预测值和实际值之间的误差较小。

图像处理之image stitching

背景介绍

图像拼接是一项应用广泛的图像处理技术。根据特征点的相互匹配,可以将多张小视角的图像拼接成为一张大视角的图像,在广角照片合成、卫星照片处理、医学图像处理等领域都有应用。早期的图像拼接主要是运用像素值匹配的方法。后来,人们分别在两幅图像中寻找拐点、边缘等稳定的特征,用特征匹配的方法拼接图像。本实验根据Matthew Brown (2005) 描述的方法,实现多张生活照的拼接。

特征点捕捉 (Interest Point Detection)

首先,拍摄两张场景有重合的照片。为了保证有足够多的公共特征点,照片的重合度应该保证在30%以上。将两张照片转换为灰度图像,对图像做σ=1的高斯模糊。在Matthew的文章中,他建立了一个图像金字塔,在不同尺度寻找Harris关键点。考虑到将要拼接的照片视野尺寸接近,故简化此步骤,仅在原图提取特征点。

人脸检测中几种框框大小的选择~

人脸检测应用极为广泛,内部细节也偏多,尤其是涉及到几种类型的框,这几种框的大小之前有着千丝万缕的联系,对检测性能的好坏影响程度大小不一。本篇文章基于自己在人脸检测方面的经验,说说对这些框之间关系的一些理解。

现在大部分人脸检测效果都已adaboost+LBP(各种改进)的方式实现,adaboost由N个强分类器组成,每个强分类器由M个弱分类器组成,而每个弱分类器其实就是一个特征。

本文以LBP特征为例,人脸检测共涉及到如下几类框:

1. LBP特征矩形框大小(极为重要)
2. 检测框大小(重要)
3. 检测目标大小(次要)
4. 原始训练样本大小(重要)
5. 图像大小(不重要)

其中,LBP特征矩形框大小一般由四个量组成,它们是:矩形框相对于模板的位置(x, y),矩形框的大小(w, h)。这四个变量均可以自由改变,只是有一个约束,那就是原始训练样本的大小(这也是我说的联系1)。

联系1:假设原始训练样本大小为28*28,那么LBP特征矩形框四个变量的取值均在[0-28]之内。

卷积神经网络CNN—— BN(Batch Normalization) 原理与使用过程详解

前言

Batch Normalization是由google提出的一种训练优化方法。参考论文:Batch Normalization Accelerating Deep Network Training by Reducing Internal Covariate Shift

个人觉得BN层的作用是加快网络学习速率,论文中提及其它的优点都是这个优点的副产品。

网上对BN解释详细的不多,大多从原理上解释,没有说出实际使用的过程,这里从what, why, how三个角度去解释BN。

What is BN

Normalization是数据标准化(归一化,规范化),Batch 可以理解为批量,加起来就是批量标准化。
先说Batch是怎么确定的。在CNN中,Batch就是训练网络所设定的图片数量batch_size。

Normalization过程,引用论文中的解释:

LSTM(Long Short-Term Memory)长短期记忆网络

1. 摘要

对于RNN解决了之前信息保存的问题,例如,对于阅读一篇文章,RNN网络可以借助前面提到的信息对当前的词进行判断和理解,这是传统的网络是不能做到的。但是,对于RNN网络存在长期依赖问题,比如看电影的时候,某些细节需要依赖很久以前的一些信息,而RNN网络并不能很好的保存很久之前的信息,随着时间间隔不断增大,RNN网络会丧失学习到很远的信息能力,也就是说记忆容量是有限的。例如,对于阅读一本书,从头到尾一字不漏的阅读,肯定是越远的东西忘得越多。所以引入了LSTM网络,对于LSTM来解决梯度消失梯度爆炸问题。

LSTM其实也是RNN的一种变体,大体结构几乎是一样的,但他们又有区别他的“记忆细胞”被改造过,该记忆的信息会一直传递下去,而不该记忆的东西会被“门”截断。

2. LSTM网络

对于RNN网络都是具有重复神经网络模块的链式形式,在一个标准RNN中这个重复的模块只要一个非常简单的结构,例如一个tanh层。

物联网在2018年迎来了突破性发展

进入2018年,越来越多人开始习惯于让家里的亚马逊Alexa、谷歌助手之类的智能音响完成列购物清单、开灯、关灯之类的工作。相比于几年前已经进入普通人家、且如今看来已不再新鲜的扫地机器人来说,这些新兴的智能设备将加速促进生产生活和社会管理方式向智能化、精细化、网络化方向转变。

虽然我们越来越习惯于跟机器交谈,让其为我们完成一些琐碎的工作,但备受期待的物联网所带来的改变远不止于此,而是更加深远,是在一个充满智慧城市、互联程度越来越高的世界中机器与机器之间的互相联通。

物联网技术的话题已经热议了很长时间,现在终于有了一些实质性的进展。在过去的十几年间,全球相继启动智慧城市计划。德勤最新发布的《超级智慧城市报告》显示,目前全球已启动或在建的智慧城市已达1000多个,从在建数量来看,中国以500个试点城市居于首位。随着中国将智慧城市写入国家战略,并投入大量资金,无论是一线城市,或是中小型城市,皆有智能城市项目落地,并且形成了数个大型智慧城市群,分布在东部沿海以及中西部地区。

机器学习:集成学习(ensemble learning)——原理概述

集成学习(ensemble learning)

集成学习通过构建多个个体学习器,然后再用某种策略将他们结合起来,产生一个有较好效果的强学习器来完成任务。基本原理如下图所示。这里主要有三个关键点:个体学习器的同质异质、个体学习器的生成方式、结合策略。

机器学习:集成学习(ensemble learning)(一)——原理概述

  •   同质异质

首先需要明确的是个体学习器至少不差于弱学习器。弱学习器常指泛化性能略优于随机猜测的学习器,例如二分类问题中精度略高于50%的分类器。对于训练数据若集成中的个体学习器为同一类型,例如都为BP神经网络或者都为决策树,则称同质集成。同样的道理,若个体学习器类型不同,例如既有决策树又有神经网络,则称异质集成。

  •   个体学习器的生成方式

深度学习在OCR中的应用

背景

计算机视觉是利用摄像机和电脑代替人眼,使得计算机拥有类似于人类的对目标进行检测、识别、理解、跟踪、判别决策的功能。以美团业务为例,在商家上单、团单展示、消费评价等多个环节都会涉及计算机视觉的应用,包括文字识别、图片分类、目标检测和图像质量评价等方向。本文将通过以OCR(光学字符识别)的场景来介绍深度学习在计算机视觉中的应用。

基于深度学习的OCR

文字是不可或缺的视觉信息来源。相对于图像/视频中的其他内容,文字往往包含更强的语义信息,因此对图像中的文字提取和识别具有重大意义。OCR在美团业务中主要起着两方面作用。一方面是辅助录入,比如在移动支付环节通过对银行卡卡号的拍照识别以实现自动绑卡,辅助运营录入菜单中菜品信息,在配送环节通过对商家小票的识别以实现调度核单,如图1所示。另一方面是审核校验,比如在商家资质审核环节对商家上传的身份证、营业执照和餐饮许可证等证件照片进行信息提取和核验以确保该商家的合法性,机器过滤商家上单和用户评价环节产生的包含违禁词的图片。

一位ML工程师构建深度神经网络的实用技巧

在经历成千上万个小时机器学习训练时间后,计算机并不是唯一学到很多东西的角色,作为开发者和训练者的我们也犯了很多错误,修复了许多错误,从而积累了很多经验。在本文中,作者基于自己的经验(主要基于 TensorFlow)提出了一些训练神经网络的建议,还结合了案例,可以说是过来人的实践技巧了。

作者| Matt H/Daniel R
译者| 婉清
编辑| Jane
出品| AI 科技大本营

通用技巧

有些技巧对你来说可能就是明摆着的事,但在某些时候可能却并非如此,也可能存在不适用的情况,甚至对你的特定任务来说,可能不是一个好的技巧,所以使用时需要务必要谨慎!

▌使用 ADAM 优化器

确实很有效。与更传统的优化器相比,如 Vanilla 梯度下降法,我们更喜欢用ADAM优化器。用 TensorFlow 时要注意:如果保存和恢复模型权重,请记住在设置完AdamOptimizer 后设置 Saver,因为 ADAM 也有需要恢复的状态(即每个权重的学习率)。

▌ReLU 是最好的非线性(激活函数)