<>什么是人工智能、机器学习和深度学习?
首先人工智能的英文是ArtificialIntelligence也就是常说AI,它是一个比较宽泛的概念,是研发用于模拟和扩展人类智能的理论和方法技术的一门新学科。因为这个定义只阐述了目标,而没有限定具体的实现方法,因此要实现人工智能的话就存在很多方法和分支。
然后是机器学习,机器学习是现在比较有效的一种实现人工智能的方式,它是专门研究计算机怎样模拟和实现人类的学习行为,以此来获取新的知识技能,然后不断改善自身的性能这样的一种方法。机器学习的实现一般是分成两步先训练再预测。
最后是深度学习DeepLearning,深度学习是机器学习算法中最热门的一个分支,因为最近这些年深度学习取得了比较显著的进展,所以替代了大多数传统机器学习算法。比如说深度学习就可以完成数据挖掘,计算机视觉,语音识别,自然语言处理等工作。卷积神经网络Convolutional
Neural Networks (CNN)
循环神经网络Recurrent Neural Networks (RNN)
AlphaGo就是其中之一。
简单来讲,机器学习是实现人工智能的一种方法,而深度学习仅仅是实现机器学习的一种技术而已。
<>相比传统的机器学习算法,深度学习做出了哪些改进呢?
其实两者在理论结构上是一致的,一般都是先模型假设、再评价函数最后来优化算法,其根本差别在于假设的复杂度。就比如一张人像照片,人的大脑可以接收到五颜六色的光学信号,能快速反应出这张图片是一个男人还是一个女人。但对计算机来说,它能接收到的只是一个数字矩阵,它理解不了男人女人这种比较高级的语义概念。因为从像素到高级语义之间要经过很复杂的信息变换,这种变换已经没有办法用数学公式表达,所以一些大牛借鉴了人脑神经元的结构,设计出神经网络的模型。
机器学习的核心要素是通过对数据运用,通过统计或推理的方法,让计算机的性能得到提升。而深度学习,则是把由人工选取对象特征,变成通过让神经网络自己选取特征,为了提升学习的性能,神经网络的表示学习的层次就比较深。
<>为何神经网络到2010年后才焕发生机呢?
这与深度学习成功所依赖的先决条件:大数据涌现、硬件发展和算法优化有关。
大数据是神经网络发展的有效前提。神经网络和深度学习是非常强大的模型,需要足够量级的训练数据。
依靠硬件的发展和算法的优化。
<>机器学习三步
建模问题:如何找一系列函数来实现预期的功能,这是建模问题。
评价问题:如何找出一组合理的评价标准,来评估函数的好坏,这是评价问题。
优化问题:如何快速找到性能最佳的函数,这是优化问题(比如说,机器学习中梯度下降法干的就是这个活)。
<>OCR字符识别
OCR(Optical Character Recognition)
中文叫做光学字符识别。它是利用光学和计算机技术把手写或打印在纸上的文字读取出来,通过检测亮暗的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。实际应用:比如扫描身份证信息;车牌识别技术;APP搜题等。
OCR可以分为两类:手写体识别和印刷体识别。
印刷体识别较手写体识别要更简单,因为印刷体大多都是规则的字体,而人手写的字往往带有个人特色,每个人写字的风格基本不一样,虽然其他人可以读懂你写的文字,但是机器却很难。
我在初期选择时使用过谷歌开源OCR引擎Tesseract,但是最后放弃了,因为我发现在Tesseract汉字识别的精度上还是不够,可能是因为它是国外的公司。识别数字和英文字母比较简单,可能是因为字符类型比较少。但是到了中文识别,它这个引擎其实识别就没那么精确了,可能是因为汉字结构比较复杂,汉字字体也比较多,可能有几千个,所以我最终选择了百度智能云里的百度AI,其实我觉得在汉字的识别上,我们中国公司的技术还是挺厉害的,最起码在汉字识别的准确率上已经让人很满意了
<>OCR处理步骤
首先处理步骤一般可以分为三步,分别是图像处理,文字识别和后处理这三步。
<>图像处理
图像处理这个过程通常包含灰度化、二值化、降噪、文字切割等几个小的步骤。每一个步骤都涉及了不同的算法。首先是灰度化
,灰度化说通俗一点就是把一张彩色图片变为黑白图片,灰度化的过程是将图片每个像素点的RGB值统一成一个值。灰度化之后图像就会由三通道变为单通道,这样数据处理起来就会简单许多,灰度化一般有最大值法、平均值法。
二值化
的意思是因为一个图像里面即包括目标主体也包含背景还有噪点,所以要想从数字图像中直接提取出目标物体,最常用的方法就是设定一个阈值,用这个阈值把图像的数据分成两部分:大于这个阈值的像素群和小于它的像素群,这就是图像的二值化(binaryzation)。
二值化里最重要的就是阈值的选取,一般分为固定阈值和自适应阈值。比较常用的二值化方法则有:双峰法、迭代法。
然后是降噪
,图像在数字化和传输过程中常受到一些设备和外部环境的干扰,得到的图像中可能会有很多零星的小黑点,这就是噪点。图像降噪的方法一般有均值滤波、中值滤波器等等。均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,这个模板包括了它周围的临近像素,再用模板全体像素的平均值来代替原来像素值。说的简单一些就是把邻域内的平均值赋给中心元素。均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,存在着边缘模糊的问题,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。
下来就是给图像倾斜矫正然后进行文字切割。
<>文字识别
文字识别里比较重要的就是特征提取和降维,特征是用来识别文字的关键信息,每个不同的文字都能通过特征来和其他文字进行区分。在确定了使用何种特征后,还有可能要进行特征降维,因为有的时候如果特征的维数太高,分类器的效率会受到很大的影响,为了提高识别速率,往往就要进行降维。
下来就是分类器设计和训练。对一个文字图像,提取出特征丢给分类器后,分类器就会对它进行分类,也就是告诉你这个特征该识别成哪个文字。我们的任务就是对分类器的设计。分类器的设计方法一般有:模板匹配法、判别函数法、神经网络分类法。在进行实际识别前,往往还要对分类器进行训练,这是一个监督学习的过程。成熟的分类器也有很多,有
SVM,CNN等。
<>后处理
其实就是对于分类器的分类结果进行优化,这一般就要涉及自然语言理解的范畴了。因为有时候模型识别结果并不准确,所以我们需要对识别的结果进行矫正和优化。比如我们可以设计一个语法检测器,去检测字符的组合逻辑是否合理。比如一个单词Because,我们设计的识别模型把最前面的字幕B识别成了8,那么我们就可以用语法检测器去纠正这种拼写错误完成识别的矫正。