demi的博客

从普通程序员到AI大神,跨界的正确方式!

人工智能的飞速崛起,使得该领域出现了巨大的人才缺口,据说在北上广地区,一个机器学习算法的岗位拿到100K的薪水也并不是一件很困难的事情,这刺激了普通程序员学习人工智能,迫切希望在人工智能大热时实现转行。可是许多程序员不知道该如何快速有效地学习人工智能。

其实,既然已经具备了普通程序员的功底,再转人工智能方向并非难事,接下来我们就具体分析一下,普通程序员该如何正确学习人工智能方向的知识。

1. 熟练掌握基础理论知识

要成为人工智能领域,尤其是机器学习方向的程序员必须有一定的数学和算法基础,尽管各类框架使得现在的机器学习编程变得越来越简单,表面上可以不用在意太多的数学和算法细节,但实际上,即使是针对工程应用,一定程度的数学和算法理解以及对应的思维方式,能够在解决问题以及选择模型套用时提供许多的帮助。相关的知识理论基础包括:高等数学基础、统计学基础、线性代数、数值计算方法、运筹学。

当然,如果不打算进行特别深入的研究和扩展,以上内容并不需要都精通,但至少需要保持在知晓且能够形象化理解的范围内,只有在掌握这些基础的前提下,理解人工智能和机器学习相关的知识才能更加轻松顺利。

2. 相关基础工具的学习和应用

虚拟现实感知的技术应用和虚拟化具身

虚拟现实技术的兴起,这两年已经成为了一种高科技、时尚的代名词。虚拟现实技术什么时候才能走进我们的生活,成为我们平常生活中随时可以应用的一种工具?现在我带你走进虚拟现实的世界,让我们一起感受虚拟现实在生活中的体验。

一、虚拟电子媒体

每天早上醒来,我们只需要声控“打开新闻”,就会在我们所处的卧室、客厅、厨房、卫生间出现一道看不见的电子墙,实现全4维空间播放我们感兴趣的实事、经济、科技、娱乐、天气等新闻,就像我们在现场一般。当你乘坐公共交通时,只需在入口处扫描二维码,在手机上打开应用,就可以不需要拿着手机,而是在你面前出现一个屏幕,你可以随意观看你感兴趣的文字、图像、音频、视频等,而且只有你自己能看见、听得见,周围的人不受任何影响。

二、驾驶的应用

[深度学习]不平衡样本的处理

机器学习中经典假设中往往假定训练样本各类别是同等数量即各类样本数目是均衡的,但是真实场景中遇到的实际问题却常常不符合这个假设。一般来说,不平衡样本会导致训练模型侧重样本数目较多的类别,而“轻视”样本数目较少类别,这样模型在测试数据上的泛化能力就会受到影响。一个例子,训练集中有99个正例样本,1个负例样本。在不考虑样本不平衡的很多情况下,学习算法会使分类器放弃负例预测,因为把所有样本都分为正便可获得高达99%的训练分类准确率。

下面将从“数据层面“和”算法层面“两个方面介绍不平衡样本问题。

数据层面处理办法

数据层面处理方法多借助数据采样法使整体训练集样本趋于平衡,即各类样本数基本一致。

数据重采样

卷积神经网络CNN—— FCN(Fully Convolutional Networks)要点解释

前言

参考FCN论文:Fully Convolutional Networks for Semantic Segmentation

FCN作为图像语义分割的先河,实现像素级别的分类(即end to end,pixel-wise),为后续使用CNN作为基础的图像语义分割模型提供重要基础。作者在阅读FCN论文时,遇到不少困难,同时FCN没有多少中文资料(更多是英语翻译),所以作者尽量用浅白的方式讲述FCN的原理与过程。

FCN中的CNN

首先回顾CNN测试图片类别的过程,如下图

机器学习实践中应避免的七种常见错误

统计建模和工程开发很相似。在工程开发中,人们有多种方法搭建一套键-值存储系统,每种设计针对使用模式有一套不同的假设。在统计建模中,也有很多算法来构造一个分类器,每种算法对数据也有各自的假设集合。

当处理少量数据时,因为实验成本很低,我们尽可能多的尝试各种算法,从而选出效果最优的算法。但提到“大数据”,提前分析数据,然后设计相应“管道”模型(预处理,建模,优化算法,评价,产品化)是事半功倍的。

正如在我以前的文章里提到,每个给定的建模问题都存在几十种解法。每个模型会提出不同的假设条件,我们也很难直观辨别哪些假设是合理的。在业界,大多数从业人员倾向于挑选他们熟悉的建模算法,而不是最适合数据集的那个。在这篇文章中,我将分享一些常见的认识误区(要避免的)。在今后的文章中再介绍一些最佳实践方法(应该做的)。

1. 想当然地使用默认损失函数

滤波试验:不同噪声选用什么滤波器

在图像处理中,首先要对原始图像进行预处理,即将效果较差的图像处理为尽量符合后续工作的有效图像。这一步主要用到了图像增强技术(Image Enhancement)和图像复原技术(Image Restoration)。图像增强是主观的(subjective),没有特定标准需要增强到什么程度,只要满足用户的需求即可;而图像复原是客观的(objective),需要尽可能恢复为原始图像。今天我主要针对图像复原方法做了实验。

图像复原,主要是去噪。噪声来源灰常多,但主要可以分为三类:
1. 来自捕捉源的(acquisition/digitization),比如一个摄像机的镜头、A/D或者sensor;
2. 来自图像传输过程(image transmission),传输图像的信道包括无线电、微波、光缆等等,如果通过无线电传输,遇到个风吹雨雪的,自然会有各种噪声了;
3. 来自计算过程(computation),比如咱们将浮点型数据转化为整形处理,就会丢失部分信息,但这不属于错误,是把问题简化,所以这也是一种噪声。所以,图像复原主要是用各种滤波方法去除噪声。

机器好奇心有助于人工智能的发展

会学习的软件正在改变世界,但需要监督。人类以两种方式监督它们。一是向机器学习算法展示描述当下任务的大量数据。例如有标记的猫和狗的图片,让算法学习区分两者。另一种监督是在高度结构化的环境中设定一个特定目标,例如在某款电子游戏中获得高分,再让算法尝试众多可能性,直到找到能实现目标的那一个。

这两种「监督学习」的方法已经在人工智能(AI)领域带来了突破。2012 年,多伦多大学的一组研究人员用第一种方法构建了 AlexNet,这个软件在一项竞赛中识别出的图像比其最接近的竞争对手多了十分之一。2015 年,Alphabet 旗下的英国人工智能公司 DeepMind 的研究人员用第二种方法教一个算法玩电子游戏雅达利( Atari),水平超过人类。后来在围棋上取得的胜利正源自这一成果。

恶意软件检测之Deep Learning分类器

0x00、概述

本文主要是和大家介绍一下:

1. 回顾Machine Learning分类器方法。

  •  特征码提取自动化
  •  数据集介绍
  •  n-gram N如何获取
  •  特征选择
  •  算法评估

2. Deep Learning分类器

  •  为什么有Machine Learning还需要Deep Learning。
  •  如何实现Deep Learning的方法。
  •  效果验证。

0x01、Machine Learning分类器回顾

循环神经网络中Dropout的应用

循环神经网络(RNNs)是基于序列的模型,对自然语言理解、语言生成、视频处理和其他许多任务至关重要。模型的输入是一个符号序列,在每个时间点一个简单的神经网络(RNN单元)应用于一个符号,以及此前时间点的网络输出。RNNs是强大的模型,在许多任务中表现出色,但会快速过拟合。RNN模型中缺少正则化使他难以处理小规模数据,为避免这种情况研究者经常使用提早停止,或者小规模的或未充分定义的模型。

Dropout是深度网络中常见的一种正则化技巧,在训练过程中网络单元随机的被隐藏/丢弃。但这种技巧在RNNs中一直未被成功应用。实证结果使很多人相信循环层(RNN单元之间的连接)中加入的噪音在长序列中会被放大,并淹没了信号。因此现存的研究认为这种技巧应仅用于RNN的输入和输出。但这种方式在研究中发现依然会导致过拟合。

最近贝叶斯和深度学习研究的交叉提供了一个从贝叶斯理解常见深度学习技巧的角度。这种深度学习中的贝叶斯观点也引入了一些新的技巧,例如从深度学习网络中获得主要非确定估计。例如Gal和Ghahramani展现了dropout可以被解释为一个贝叶斯神经网络后验的变体近似。它们的变体近似分布是两个小方差高斯的混合,平均数是一个高斯被固定在0。这种近似贝叶斯推论的dropout基础认为理论结果的延伸可为在RNN模型中使用该技巧提供见解。

浅聊卷积神经网络的发展

卷积神经网络的发展主要是为了解决人类视觉问题,不过现在其它方向也都会使用。发展历程主要从Lenet5->Alexnet->VGG->GooLenet->ResNet等。

Lenet5

上世界80年代发明了卷积层,但由于硬件限制无法构建复杂网络,直到后面90年代才开始有实践。

1998年LeCun提出卷积层、池化层和完全连接层组合,以此来解决手写数字的识别问题。此时的效果已经很不错了,能与其它经典的机器学习模型相比。架构如下,一个32 x 32的输入,通过卷积提取特征,然后进行下采样,再一次卷积和下采样,后面进行全连接和高斯连接。

浅聊卷积神经网络的发展

Alexnet