之前总是先上手一些比较高级的神经网络算法,CNN,RNN等。可是总觉得有些知识原理总是羁绊着我进一步理解。这才意识到基础的重要性。所以,就一点一点的从基础数学最小二乘法开始。这里用到的就是咱们小学或初中学到的知识。我们也都知道深度学习就是矩阵的各种计算。所以这里我们将那些知识和大学的线性代数进行简单结合。

我们先了解向量之间的投影

比如这张图

已知:这是2维空间,A[3, 1],  B[1, 3], 求B到A最短距离的点(也就是B到A的投影P的向量)。

我们可以先用A来表示P:P = A*x  = [3, 1].T * x   (x 是 A的线性组合的系数,是个变量,就是我们要求的实数)

若使BP距离最短,则使||P - B||^2最小就行,即 使||A*x - B||^2最小。

化解:

||A*x - B||^2 = (A*x)^2 - 2AB*x + B^2

对之求导并使之等于0,求最小值x

得:

2A^2x - 2AB = 0

A^2x = AB

因为这是矩阵运算,左成A^2的逆

则写成x = (A^2)^(-1) * AB

则P = A * x = A * (A^2)^(-1) * AB

代码实现

注意区别点乘和叉乘

import numpy as np

from matplotlib import pyplot as plt

A = np.array([[3], [1]])

B = np.array([[1], [3]])

P = A * np.linalg.inv(A.T.dot(A)) * (A.T.dot(B))

# print(P)

plt.plot(A[0], A[1], 'k-o')

plt.plot(B[0], B[1], 'r-o')

plt.plot(P[0], P[1], 'r-o')

plt.plot([B[0], P[0]], [B[1], P[1]], 'y-o')

plt.plot([0, A[0]], [0, A[1]], 'k-')

plt.ylim(0, 3)

plt.xlim(0, 3.5)

plt.text(A[0]+0.1, A[1], 'A')

plt.text(B[0], B[1]-0.1, 'B')

plt.text(P[0]+0.1, P[1]+0.1, 'P')

plt.show()

给定一堆点,求一条线来拟合这些点

比如有n个点(X1, Y1), ..., (Xn, Yn)

我们选取特征函数 y = ax^2 + bx + c

(特征函数的选取可以任意函数,根据经验选取特征函数,比如也可以是y = ax^2 + bx + csinx + de^2 + f 等 )

那我们就有以下矩阵表示:

代码实现:

import numpy as np

from matplotlib import pyplot as plt

x = np.linspace(-1, 1, 100)

y = 2.3*x*x + 3.5*x + 0.04

y_ = y + np.random.rand(len(x)) - 0.5

A = []

times = 2

for i in range(times+1):

A.append(x**(times-i))

A = np.array(A).T

B = y_.reshape(y_.shape[0], 1)

w = np.linalg.inv(A.T.dot(A)).dot(A.T).dot(B)

pred_y = A.dot(w)

print(w)

plt.scatter(x, y_)

plt.plot(x, y, 'k-')

plt.plot(x, pred_y, 'r-')

plt.show()

结果系数输出:

[[ 2.28283947]

[ 3.46918764]

[ 0.05473155]]

黑线为理想曲线,红色为拟合曲线。

这样看,效果还是可以的。


更多精彩内容,请关注 深度学习自然语言处理 公众号,就是下方啦!跟随小博主,每天进步一丢丢!哈哈!

深度学习数学基础一--最小二乘法相关推荐

  1. 《速通深度学习数学基础》

    目录 序 前言 第1章 线性代数的基本概念 1.1 向量和深度学习 1.2 向量距离计算 1.3 向量的基本性质 1.4 矩阵的基本概念 1.5 一些特殊的矩阵 第2章 线性代数在深度学习中的应用 2 ...

  2. 深度学习--数学基础(1)

    深度学习–数学基础(1) *2021-04-21 22:56 在学习深度学习之前,需具备良好的数学基础,主要包括线性代数.微积分.概率论三个数学分支. 目录 深度学习--数学基础(1) 1.数据表示- ...

  3. 【转载】深度学习数学基础(二)~随机梯度下降(Stochastic Gradient Descent, SGD)

    Source: 作者:Evan 链接:https://www.zhihu.com/question/264189719/answer/291167114 来源:知乎 著作权归作者所有.商业转载请联系作 ...

  4. 深度学习数学基础之线性代数

    深度学习中的基本数据结构,基本上都是用向量或矩阵表示的,因此: 深度学习的基础学科之一:就是线性代数. 深度学习中的线性代数知识主要包括以下部分: 1.标量.向量.矩阵和张量: 这4个变量很好理解: ...

  5. 深度学习数学基础——矩阵微分篇

    https://www.toutiao.com/a6641771475994952206/ 2019-01-02 13:45:27 深度学习是一个令人兴奋的领域,具有巨大的现实世界影响力. 本文是Te ...

  6. 深度学习数学基础-概率与信息论

    前言 概率论学科定义 概率与信息论在人工智能领域的应用 3.1,为什么要使用概率论 3.2,随机变量 3.3,概率分布 3.3.1,离散型变量和概率质量函数 3.3.2,连续型变量和概率密度分布函数 ...

  7. 深度学习数学基础(一)~卷积

    前言 我在学习机器学习和图像处理的过程中经常会遇到卷积这个概念,但我每次遇到这个概念都有点不甚了解.于是我在学习了几个博客之后把我理解的做了一个总结,其不足之处敬请指正. 一.卷积的起源 文献来源:- ...

  8. 深度学习数学基础(三): 激活函数、正则化函数、损失函数、评价指标

    目录 1. 激活函数activation function 1.1 Sigmoid 1.2 tanh 1.3 ReLU 1.4 Leaky ReLU 1.5 softmax 1.6 Gelu 2. 归 ...

  9. 深度学习数学基础之激活函数与导数

    ​ ​ 活动地址:CSDN21天学习挑战赛 函数与导数 函数 神经网路最常听到的一个名词就是激活函数,那激活函数是什么呢? 百度百科是这样说的,函数,最早由中国清朝数学家李善兰翻译,出于其著作< ...

  10. 深度学习数学基础 熵?

    信息论-熵 信息熵 信息熵,可以看作是样本集合纯度一种指标,也可以认为是样本集合包含的平均信息量,信息熵越小,蕴含的粗确定性越小 联合熵 两个随机变量X和Y的联合分布可以形成联合熵,度量二维随机变量X ...

最新文章

  1. Java学习笔记六 常用API对象二
  2. SpringCloud-Eureka
  3. 微服务架构---服务降级
  4. erlang odbc mysql参数_Erlang在Redhat 5.3下使用unixODBC连接Oracle数据库的配置
  5. Codeforces Round #299 (Div. 2) D. Tavas and Malekas kmp
  6. 【Python基础知识-pycharm版】第十一节-文件操作(IO技术)
  7. Asp2.0下Login.Aspx页面和VS2005登陆控件冲突问题!
  8. Symfony2Book04:Doctrine01-介绍模型(Model)
  9. maven pom文件的一些自己的理解
  10. [在职软件工程]面向对象的分析与设计
  11. MySQL的ALTER命令
  12. 运维工作常见问题处理38-74(二)
  13. IR2104半桥驱动电路
  14. 新冠疫情分析(疫情数据爬取+数据分析+网页排版展示)
  15. 他发现了古老疟疾背后的元凶,也在质疑声中开创了致病生物的新时代
  16. 2022高教社杯 国赛数学建模 B题思路
  17. 微信8年,这几个冷知识你都知道吗?想必知道的人也不多吧
  18. Word如何从目录后加页码
  19. 案例:世界500强如何打造汽车后市场智慧门店
  20. 微软crm 开发笔记 系统配置使用

热门文章

  1. C++ 訪问控制权限图解
  2. 《ES6标准入门》学习笔记
  3. 设计OA系统的用户-角色-权限分配
  4. 搜索题,留着以后慢慢刷
  5. (转)LIB和DLL的区别与使用
  6. Windows Phone 8初学者开发—第18部分:在页面间导航
  7. C++函数重载与引用的较好的练习实例
  8. vue-awesome-swiper 的安装和使用
  9. property 、classmethod 、 staticmethod 的用法
  10. Python+selenium搭建自动化框架