学习机器学习一 基本基础知识

我在接触AI——机器学习的时候,我一直觉得我们可以用传统的编程去解决机器学习现在在解决的问题,但是随着深入学习,我发现有些东西是不能的,因为这并不是一个好方法。

传统编程:①对某一类问题,我们要进行特定编程,对于衍生出来的问题,我们往往要重新编程;

                 ②对于解决某一类问题,我们需要有非常清晰的逻辑,考虑到各种特殊点,要求对解决问题有非常深入的业务理解。

机器学习①并不严重依赖于逻辑编程,所以我们创造出来的模型,可以去解决某类问题时也能解决衍生出来的问题。可以理解为当编程任务不确定时,机器可以自动感知这种情况并自动解决任务;

                 ②机器学习还能做数据挖掘(即大量数据间,往往或多或少的隐存着某种重要的关系和相关性,而数据挖掘就是提取出数据之间的重要关系和相关性)。

拿人脸识别来说,我们分辨一张人脸是依赖于我们从小学到的特征图像,长这样的就是人而不是猴子,就算这人脸上很多毛你也不会认为他是猴子。机器的图像世界只有像素,我们不从像素的粒度(可以理解为跨度大小、粗糙细腻的程度)去思考,就做不好机器学习。机器对图像的识别是通过像素去辨别他的灰度,在做人脸识别时,我们会给一堆人脸图像给机器并训练它,它会找出这一堆图像的一个共同的维度特征,所以下次给新的人脸图形,他也能识别出来这是人,而不是煎饼。就像我们人类识别人脸,你说不来为什么这是人脸,但就是知道这是人脸,因为你心里也有一组维度特征,只是你不知道。这样思考,是不是就能稍微理解下机器和人类的思维挂钩了。

我们知道AI一般分为机器学习和深度学习,我们现在先讨论下机器学习,以后继续说深度学习。

机器学习大部分归为三类:①监督学习(我们给的样本先分好类或分值再训练),针对分类问题归类问题

                                           ②非监督学习(没有标记,它不用知道是什么,只是把一样的找出来),一般是聚类问题

                                           ③强化学习(  为在某个数据点的动作,做出下一步响应)。

监督学习:其实就是一开始给机器训练的图像分类打标签,即类别标签,比如这是什么(人或猪),或者这是对错,这也是分类问题。再比如给物品分配一个适合它的价格,也就是回归问题。然后机器通过训练大量我们打好标签的数据,训练好模型,我们再通过给一批新的数据(测试数据)去验证这个模型。

非监督学习:主要目标是以某种方式来组织数据或者描述数据结构,让它发现其中的相似处,并把相似的聚为一类,这不需要知道这类是什么,这就是聚类问题

强化学习:一组感知器在某个时间点读取的数据就是一个数据点,这时算法需要这个数据点为机器人的下一个动作做出选择。这也是物联网应用的本质(物联网可以粗糙的认为是不智能的、可以联网的、偏向依赖硬件的产品网)。

学习图像一定要学习OpenCV,现在到版本3了吧,不管是AI学习还是普通图像产品,都要学习的。虽然我是软件工程专业,但以前也不务正业买了个树莓派玩,最近被传的上天的树莓派4已经开卖了,心动动,虽然它被测出严重漏洞,不过对于我低端学习者一点影响没有,哈哈哈。

python、java、c/c++都能做人工智能编程,但python是主流,大家都说他快,其实python的底层是C语言,其实是C快,但是python精简的语言编程风格,会更容易上手。但是我觉得现在做AI的大佬,以前大都是做C出身的,所以好像C做AI更多点,我喜欢python,c觉得太复杂了,虽然我现在在搞一奶同胞的.NET,哎,可完全不是一回事啊。至于java做AI,有点像异教徒的感觉,哈哈哈,如果普及相信大家更喜欢,毕竟连我第一门能独立编程的语言也是java。坐等风潮,我是一颗海草海草,随~风飘摇……

回归正题:

机器学习主要是通过构建数学模型来理解数据,学习模型可以调节它内在的参数,这个过程就有了学习的属性。可以调节这些参数,让模型可以更好的解释这些数据(不难理解的,都知道机器只识别0,1两个数字,它的世界就是数字,数字就可以构建数学模型,哪怕一元二次方程不也是吗。而学习的参数,可以理解为当我们想要用眼睛认识一个新物体时,比如什么是和田玉,我们可以放眼皮底下慢慢端详,也可以选择放在远点看一下大概轮廓。而你认识学着认识和田玉的方式就是参数调节)。

顺便一提,你认识和田玉的这块玉就是训练数据集,你就是模型。下一次你去逛和田玉市场,那些玉就是测试数据集,挑不挑到真玉你就知道你这个模型好不好了,这样是不是好理解下面的图了。

书的作者说了,一个高级的机器学习问题的工作流一般包括第三组叫做验证数据集的数据。验证数据集一般是将训练数据集进一步划分而得到的。而多种多样的数据集,可以保证模型的一个泛化能力,也是了解模型在新数据点上的泛化能力的唯一途径。

现在我们谈下怎么处理数据,即数据的预处理会让机器更容易解析、学习。

数据预处理分为两个阶段:①特征选择,这是识别数据中重要(或者特征)的步骤。一幅图像的特征可能是边缘的位置角点或者山脊点等。OpenCV提供的一些更为高级的特征描述算子,比如“加速健壮特征(Speeded Up Robust Features,SURF)”,或者“方向梯度直方图(Histogram of Oriented Gradients,HOG)”。算子是先辈们为我们研究出来的。

                                           ②特征提取,这一步是把原始数据转换成希望的特征空间的实际过程。比如Harris操作符,可以让我们从中提取我们选择的特征。

我们常常用特征工程来形容这过程。

解释下

角点,角点就是极值点,即在某方面属性特别突出的点。角点可以是两条线的交叉处,也可以是位于相邻的两个主要方向不同的事物上的点。

SURF (speed-up robust features ,即加速健壮特征)算法是一种尺度不变、旋转不变且性能较好的算法,但其稳定性和时间复杂度不足,不稳定的特征点被检测出来,会导致多余的计算。

Harris是一种高效的角点检测算法,但不具备尺度不变性。

监督学习的最后一点提醒,就是每个数据点都要有属于自己的标签。标签标示的数据点要么属于某个特定的事物的类别(比如猫或者狗),要么有某个确定的值(比如房子的价格)。

接着讲一个功能完善的机器学习系统,首先要学习如何载入、存储和操作数据。图像可以看做是简单的二维数组,其中数字表示一个区域内的像素亮度(很容易理解,图像是一个平面就是二维空间,那个X和Y轴就可以表示这图像上的每一点。图像用像素表示,可以理解为X,Y的点)。语音片段就可以看做是随着时间变化的一维数组(为什么是一维不是二维,我们可以理解为X就是时间,它是固定变化的,随波逐流的只有Y的值,所以我们省略了X,就是一位数组)。书里教的是python和opencv来实现。

现在要求要了解:

1、如何从原始数据中提取有效的特征;

2、如何使用数据和标签训练机器学习模型;

3、如何使用最终的模型去预测新的数据集;

4、上机操作自己去做一个机器学习的实例。

这就是我的理解和笔记了,比较通俗,如果那里写错的还望看到的大佬们指出,交流谈论。我就是那个啥技术都不懂,又啥都想学的小小程序员。

这些学习笔记是我在拜读了Michael Beyeler著的《机器学习 使用OpenCV和Python进行智能图像处理》的自我理解,感谢。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值