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' ...
随机推荐
- 图片转成Base64
var img = "imgurl";//imgurl 就是你的图片路径 function getBase64Image(img) { var canvas = document. ...
- git 工作区管理
git工作区 git的工作区就是电脑中能看到的目录,比如我的learning文件夹就是一个工作区 版本库暂存区 工作去有一个隐藏的目录.git,这个不算工作区,而是git的版本库 git的版本库中存了 ...
- balcanced-binary-tree
题目描述 Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced bi ...
- js中浅拷贝和深拷贝以及深拷贝的实现
前言:2019年的第一篇分享... 一.什么是基本类型值和引用类型值?ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型.基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构 ...
- Angular cli 发布自定义组件
建立工作空间 ng new Test --style=scss //Angular6.x及以下可以使用这个命令指定使用.scss样式表 ng new Test ...
- 使用飞冰组件关于点击行回填在input内(React)
import { Table,Grid } from "@icedesign/base"; import { FormBinderWrapper as IceFormBinderW ...
- jmert中如何测试上传文件接口(测试上传excel文件)
第一次用jmeter这个工具测试上传接口,以前没做过这一块,导致走了很多弯路.特地把经验谢谢,怕自己以后忘记... 一,jmeter如何上传文件 jmeter 的 http requests post ...
- [linux-脚本]shebang(shabang #!)
使用Linux或者unix系统的人们对#!这个符号都不陌生,但要说出个具体的所以然来,很多人估计还真不行,我们有必要就此整理一下.Shebang这个符号通常在Unix系统的脚本中第一行开头中写到,它指 ...
- Asp.net APP 重置密码的方式
在开发ASP.NET WEB APP的时候,时间长了容易忘记最初设置的密码,即使打开数据库也不好重置,因为密码都是加密存储在数据库中的.下面是几种通过代码重置密码的方式: 第一种: string re ...
- malloc/free与new/delete的区别与联系
相同点:(1)都是申请内存,释放内存,free和delete可以释放NULL指针:(2)都必须配对使用,这里的配对使用,可不能理解为一个new/malloc就对应一个delete/free,而是指在作 ...