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' ...
随机推荐
- 穿透dom触发事件
const elems = document.elementsFromPoint(e.pageX, e.pageY); const instance = elems.filter(elem => ...
- 1.1 Java并发编程的一些概念
并发编程的一些概念 同步和异步 同步: 同步方法必须等到方法调用返回后,才能继续后继的行为.也就是说,同步方法执行时,如果没有返回,则后面的方法是执行不到的.同步方法调用,调用过程中可能出现阻塞和等待 ...
- websocket session共享
单机运行 用户a通过服务器进入房间room,用户b也通过房间进入room,用户之间是通过session来通话的,所以session直接存储在集合中就可以了. 因为session存储在一台服务器的集合中 ...
- sciense
I hate the word "networking." It must be one of the most overused words in the English lan ...
- 实训任务02:Hadoop基础操作
实训任务02:Hadoop基础操作 班级 学号 姓名 实训1:创建测试文件上传HDFS,并显示内容 需求说明: 在本地计算机上创建测试文件helloH ...
- python笔记20-装饰器、作用域
函数的作用域是就近原则,从里往外找,如果自己函数里有,就拿过来如果自己的函数里面没有的话,就去它父级函数里面找,父亲用不了儿子的,儿子可以用父亲的函数只有被调用才会执行# name = 'python ...
- 练习 map集合被使用是因为具备映射关系 "进度班" "01" "张三" "进度班" "02" "李四" "J1701" "01" "王五" "J1701" "02" "王二" 此信息中,我们要怎样把上述信息装入集合中, 根据班级信息的到所有的所有信
package com.rf.xs; import java.util.Arrays; public class Student01 { String name; int age; public St ...
- GridControl 主从模式(Master-detail)子表格获取行数据
今天遇到一个问题,gridcontrol使用主从表的时候,在子表中获取子表的行数据时居然获取不到,郁闷了很久.然后在网上找到方法(出处在这里:https://q.cnblogs.com/q/83412 ...
- LoadLibrary 失败的解决
工作中遇到调用Loadlibrary 偶发失败的问题,不是必现,而且这种错误只是在程序初始化的时候出现,初始化成功后当然不会调用,而初始化也不是经常做的动作,所以查找原因起来比较麻烦,调试过程中发现有 ...
- Python常用数据类型
一 .列表 name = ['zhangshan', 'lishi', 'wangwu']# 列表赋值 name.append('liujun')# 增,默认增加到最后位置 name.insert(1 ...