AI之旅(1):出发前的热身运动
前置知识
无
知识地图

自学就像在海中游泳
当初为什么会想要了解机器学习呢,应该只是纯粹的好奇心吧。AI似乎无处不在,又无迹可循。为什么一个程序能在围棋的领域战胜人类,程序真的有那么聪明吗?如果掌握机器学习,就能创造属于自己的AI吗?
怀着这样的好奇心,开始了在机器学习领域的探索。学习的第一步是从《吴恩达机器学习》公开课开始的,不可否认对于一个初学者而言,这始终是最好的入门课程。
同样的知识也有不同的学法,比如一个公式摆在面前,浅一点的学法是直接把它背下来便于应用。深一点的学法是探究公式的原理和推导过程。不同的人倾向不同的学法。
当选择了第二种学法后,“为什么...”这个概念开始不停涌现。当想要掌握每一个知识点时,立刻感觉困难重重。如同在海面上游泳试图深潜,巨大的阻力扑面而来。
学习中遇到的第一个问题
学习的过程总是磕磕碰碰的,一会儿这里不懂,一会儿那里不懂。等到补上了相关知识回头看时,才会恍然大悟,啊,原来在这么简单的地方浪费了这么多的时间。
单位时间效率低,这是学习中遇到的第一个问题。为什么会浪费这么多的时间呢,一方面是花费时间在网络上搜索信息,一方面是花费时间弥补缺失的前置知识。
弥补缺失的知识应该不能算浪费时间,但是为了搜索信息而耗费大量的时间,就有些难以忍受了。除了锻炼一下搜索信息的能力外似乎没有什么益处。
学习中遇到的第二个问题
学习的过程就是不断接触和认识新事物的过程。具体在机器学习中,这些新事物就是一种种算法。一种算法了解完之后,总是处于似懂非懂的状态,想要具体实现时不知从何下手。
缺少直观上的认识,这是学习中遇到的第二问题。为什么会缺少直观上的认识呢,一方面是因为无法看见算法之间的联系,一方面是缺少一个简单易懂的例子。
以上种种都是学习中可能会遇到的困难,不断克服困难固然会提升解决问题的能力,同时也消磨着学习的热情。如果同时出现了太多的困难,很容易就有放弃的念头。
有没有更加平滑的学习曲线?
换一种形式来学
写这些文章的目的,主要是为了把这磕磕碰碰的入门之旅记录下来。同时也在思考一个问题,有没有一种方式能够帮助更多的人用更经济的方法入门。
设置前置知识:理解一个知识点需要的最低限度的前置知识,这里仅对前置知识做简要介绍。
描绘知识地图:在已掌握和未掌握的知识点间建立联系,使得对于知识体系有个全局上的认识。
构造最小模型:使用能够呈现算法本质的最小规模的例子,能够简洁直观地理解算法的本质。
从方程到矩阵
下一篇要介绍的第一种算法是线性回归,现在开始为理解线性回归做一些准备工作。
方程对于我们而言并不陌生,有几个方程组就能解几个未知数:

仔细观察方程组会发现每一列的未知数是相同的:

如果把参数视为三维空间中的向量,方程可以表示为向量的线性组合:

如果把未知数也视为一个向量,方程也可以表示为矩阵和向量的乘积:

那么下一个问题是,如果方程组的数量多于未知数的数量时该怎么解方程呢?这种情况可以用线性回归算法来处理。
如果对向量和空间没有直观的认识,推荐观看《麻省理工公开课:线性代数》,这里面涉及的许多数学知识在后续中都会用得到。
Octave的使用
动手实践会加深理解,把代码敲出来是很好的理解算法的途径。Octave是一款适用于数值计算的开源软件,相比于其他软件,它的优点是代码非常简洁。本文中的代码基于Octave实现。
小任务:下载并安装Octave。
网络上有很多介绍Octave如何使用的文章和视频,这里不再赘述,只讲以下几点,重点是要掌握通过帮助文档来学习调用函数的能力。
1,向量的表示

2,矩阵的表示

3,画一幅图

4,实现一个for循环

5,看到不会的命令时怎么办?

6,英语不好怎么办?

结语
至此我们已经具备了能够实现线性回归算法的技术水平了,是不是很惊讶?在下一篇中我们将使用类似的例子,对线性回归的原理进行讲解。让我们开始探索之旅,走起!
AI之旅(1):出发前的热身运动的更多相关文章
- AI之旅(2):初识线性回归
前置知识 矩阵.求导 知识地图 学习一个新事物之前,先问两个问题,我在哪里?我要去哪里?这两个问题可以避免我们迷失在知识的海洋里,所以在开始之前先看看地图. 此前我们已经为了解线性回归做了 ...
- Android逆向进阶——让你自由自在脱壳的热身运动(dex篇)
本文作者:HAI_ 0×00 前言 来看看我们今天的主题. 让你自由自在脱壳的热身运动. 现在很多第厂家都是使用第三方的加固方式来进行加固的.或者使用自己的加固方式进行加固. 那么我们必不可少的就是脱 ...
- AI之旅(6):神经网络之前向传播
前置知识 求导 知识地图 回想线性回归和逻辑回归,一个算法的核心其实只包含两部分:代价和梯度.对于神经网络而言,是通过前向传播求代价,反向传播求梯度.本文介绍其中第一部分. 多元分类:符号转换 ...
- WCF学习之旅—WCF寄宿前的准备(八)
一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”. WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类协定的定 ...
- AI之旅(7):神经网络之反向传播
前置知识 求导 知识地图 神经网络算法是通过前向传播求代价,反向传播求梯度.在上一篇中介绍了神经网络的组织结构,逻辑关系和代价函数.本篇将介绍如何求代价函数的偏导数(梯度). 梯度检测 在 ...
- AI之旅(4):初识逻辑回归
前置知识 求导 知识地图 逻辑回归是用于分类的算法,最小的分类问题是二元分类.猫与狗,好与坏,正常与异常.掌握逻辑回归的重点,是理解S型函数在算法中所发挥的作用,以及相关推导过程. 从一个例子 ...
- AI之旅(5):正则化与牛顿方法
前置知识 导数,矩阵的逆 知识地图 正则化是通过为参数支付代价的方式,降低系统复杂度的方法.牛顿方法是一种适用于逻辑回归的求解方法,相比梯度上升法具有迭代次数少,消耗资源多的特点. 过拟合与欠 ...
- AI之旅(3):升维与最小二乘法
前置知识 矩阵的逆 知识地图 首先我们将了解一种叫升维的方法,用已有特征构造更多的特征.接着通过对空间与投影建立一定的概念后,推导出最小二乘法. 当特征数量不足时 在上一篇<初识线性 ...
- L270 运动前要热身
If I'm being really honest, the only time I actually remember to stretch before a workout is when I' ...
随机推荐
- Nginx 作用
django 请求的生命周期 Nginx 的作用: 浏览器 --- nginx(反向代理器)-- uwsgi --- django项目nginx : 负载均衡, 将任务分发给不同的uwsgi 动静分离 ...
- Abp 中 模块 加载及类型自动注入 源码学习笔记
注意 互相关联多使用接口注册,所以可以 根据需要替换. 始于 Startup.cs 中的 通过 AddApplication 扩展方法添加 Abp支持 1 services.AddApplicati ...
- fflush 和 fsync 的区别
int fflush(FILE *stream);If stream points to an output stream or an update stream in which the most ...
- jq鼠标事件
鼠标事件是在用户移动鼠标光标或者使用任意鼠标键点击时触发的. (1)click单击鼠标事件:click事件于用户在元素敲击鼠标左键,并在相同元素上松开左键时触发. $('p').cl ...
- java基础概念
jre是java运行环境 jdk是java开发工具包 java源文件←编译class字节码文件←运行结构
- with的上下文管理
1.with with语句是在Python2.6中出现的新语句.在Python2.6以前要正确的处理涉及到异常的资源管理时,需要使用try/finally代码结构.如要实现文件在操作出现异常时也能正确 ...
- day42-python消息队列一
消息队列”是在消息的传输过程中保存消息的容器.消息队列最经典的用法就是消费者和生成者之间通过消息管道来传递消息,消费者和生成者是不通的进程.生产者往管道中写消息,消费者从管道中读消息.操作系统提供了很 ...
- 软件151 王楚博 aodp
一.AOP是OOP的延续,是(Aspect Oriented Programming)的缩写,意思是面向切面编程. AOP(Aspect Orient Programming),作为面向对象编程的一种 ...
- MySQL · 性能优化· 5.7.6 InnoDB page flush 优化
在这篇文中,我们已经详细介绍了Oracle MySQL以及社区分支最新的对InnoDB page flush的优化.在最近release的5.7.6版本中又有了进一步的改进.主要包括以下几点修改 修改 ...
- kafka producer 0.8.2.1 示例
package test_kafka; import java.util.Properties; import java.util.concurrent.atomic.AtomicInteger; i ...