无需数学基础如进行机器学习

注:如果有一定数学基础的话也可以看看,接受任何形式的批评。

1.写在前面

写这篇文章之前压力很大,因为数学是机器学习所必须的东西。

凡事都都有个但是,但是转念一想,现在这个开源软件搞得这么红火的阶段是不是可以对一些机器学习进行概念性的了解就进行编程?想想也是可行的,因为现在对于机器学习来讲更重要的其实是调参数的过程。我见过很多人啥数学都没有学但是人家看文档愣是能做个机器学习项目,这说明两个问题,第一现在机器学习库太强大了,第二机器学习不用数学也玩的转,只要知道各种概念大概是什么意思就行。

那么我们最重要的其实只是形象化的理解各个过程就可以了。然后搭建个网络还是个很容易的事情的。

2. 什么是机器学习

所谓机器学习就是通过我们给定的大量样本总结规律用于之后数据预测的算法。

这里有个概念就是训练样本和标签。机器学习在学习之前需要我们给定大量的训练数据,这也称为训练样本。对于很多机器学习项目来说,这个样本是有标签的。举个例子来说,给了我们一万个图形数据,同时给了每个图形所代表的动物是什么,这个所代表的动物就是标签,而这一万个图形数据和标签就是是我们所说的训练样本。机器学习的过程就是从给定的这么多图形数据中进行学习。

这样看来绝大部分机器学习其实就是一个函数:

[公式]

这里把x看做一个样本,那么每个样本对应于一个输出y,这个作为预测结果。当然我们对于给定的样本是有真实结果的,将其写作d。那么机器学习的过程实际上是不断的调整函数 [公式] 的输出,使得其不断接近于d的过程。当然如何接近我们得有一个评价指标,这个指标就是我们所说的损失函数(loss function),这个损失函数最常用的就是相减后取平方。也就是预测结果和真实结果越接近那么损失函数越接近与0。

对于一些机器学习来说这个过程就有些细微的变化,我们这个函数是固定的,比如过去常用的sigmoid激活函数:

[公式]

这种情况下需要调整的显然就是w了,这个w我们称之为权值,也就是说,我们通过不断的调整w使得函数输出的y(也就是预测结果)与真实结果越来越接近。

这里可以看到机器学习所得到的并不是一个确定的结果,一个大的方向就是接近就好,能更接近当然更好。

3. 什么是迭代

上面所说的不断调整w的过程就是所谓的迭代的过程。这个迭代是要选择一个初始值的我们记为 [公式] ,之后每次迭代所得到的w,其下标都会加1作为区分。显然这个w的序列的调整不是无目的的,他有着数学理论做支撑,但是我们不必就深究细节。但是一定要知道的是这个迭代过程是这样的:

[公式]

也就是权值的调整实际上是在上面的权值加上一个数,作为新的权值w的值。再次强调下,这个m的计算实际上是比较复杂的,所以有机器学习库帮助我们完成这个过程。甚至于都不用显示的去完成这个迭代过程,我们只需要告诉我们的机器“让那个loss越来越小”就行了,当然机器会要求你提供一些样本让他学习。

 

4.矩阵和样本

矩阵可以看成一个数据表。

一般而言数据的存储方式是类二维矩阵的,每一行存储一个数据,而每个数据有多个属性。也就是类似于我们的表格,同时也是一个二维矩阵,因此对矩阵用行向量、列向量进行表示的话含义也不尽相同:

[公式]

[公式] 代表列向量,而 [公式] 代表行向量。

当然这个可能比较抽象,我们用一个更加具象的例子来表示:

[公式]

这里列向量代表不同样本的同一属性,比如对于上面的例子而言 [公式] 就代表身高。而行向量就代表每个员工自己的[身高,年龄,体重]这些属性。这个矩阵很可能有很多的员工,而属性很少,所以矩阵行数通常比列数多。

那么数据压缩是什么意思呢?

比如我表示员工的身高和体重等各种数据用了30个属性。但是通过换算,我可以用5个属性就可以完全还原所有30个属性。这个减少属性的过程就是所谓的数据压缩,换算的算法可以有PCA,SVD等。我们以后在给定和存储的数据的时候可能就不用去存储三十列数据那么多。存5列就够了。

原文地址:https://www.cnblogs.com/sea520/p/13212535.html