前言

梯度是机器学习中的重要概念,其和拉格朗日乘数法、梯度下降法之间的联系密不可分。所以本文给出了梯度的定义,并证明负梯度的方向是函数下降最快的方向(梯度的方向是函数上升最快的方向)。

至于为什么梯度下降算法能够work,是因为对于凸函数,随着函数下降的方向,一定能到达最小值。取梯度是为了沿最快下降方向,降低迭代次数。后来发现对于非凸函数,梯度下降算法表现不错,所以对于非凸函数也有使用。更具体的内容,见下一篇文章《梯度下降算法》。

本文重点结论

本文有大量证明,部分读者可能会感到有些冗余,故将重点结论罗列于下:
1. 梯度\(
\nabla f\left( {{\theta_1},{\theta_2},\cdots,{\theta_n}} \right) = \left( {\frac{{\partial f}}{{\partial {\theta_1}}},\frac{{\partial f}}{{\partial {\theta_2}}},\cdots,\frac{{\partial f}}{{\partial {\theta_n}}}} \right)
\)
2. 梯度的方向是函数上升最快的方向
3. 梯度是 || … Read the rest

前言

这是我在上学期面试中遇到的一道概率题,现场没做出来,让面试官快速进入算法题环节了= =
今天突然联想到最近在看的内容,一下子顿悟了,开心
其实这道题是语文题

题面

甲认为一道题是对的,且这道题是对的概率为0.9。乙认为一道题是对,且这道题是对的概率为0.8。求甲乙都认为一道题为对,且这道题确实为对的概率?

Note:答案不等于0.72… Read the rest

前言

最小二乘法在统计学的地位不必多言。本文的目的是全面地讲解最小二乘法,打好机器学习的基础。本文主要内容是最小二乘法的思想及在线性回归问题中的应用。后面的系列文章会继续讲解最小二乘的正则化。
至于非线性最小二乘和广义线性模型,如果以后有时间会进行整理。

不熟悉极大似然法的读者可以阅读我的另一篇文章《十分钟学习极大似然估计

updata 2019/6/13:添加了对线性回归问题的矩阵定义和简要介绍,修改了少量句子,修正了公式中的少量错误。

核心思想

最小二乘法是勒让德( A. M. Legendre)于1805年在其著作《计算慧星轨道的新方法》中提出的。它的主要思想就是求解未知参数,使得理论值与观测值之差(即误差,或者说残差)的平方和达到最小:
\[E = \mathop \sum \limits_{i = 1}^n e_i^2 = \mathop \sum \limits_{i = 1}^n {\left( {{y_i} – \hat y} \right)^2}\]
观测值\(y_i\)就是我们的多组样本,理论值\(\hat y\)就是我们的假设拟合函数。目标函数也就是在机器… Read the rest

前言

参数估计是机器学习里面的一个重要主题,而极大似然估计是最传统、使用最广泛的估计方法之一。

本文主要介绍了极大似然估计,简单说明了其和矩估计、贝叶斯估计的异同,其他估计(如MAP)并不涉及。

为什么要用极大似然估计

对于一系列观察数据,我们常常可以找到一个具体分布来描述,但不清楚分布的参数。这时候我们就需要用极大似然估计来求解这个分布的参数。换句话说,极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。

极大似然估计概述

下面结合一个例子介绍极大似然估计法的思想和方法:

设一个袋子中有黑、白两种球,摸到白球的概率为p,现在要估计p的值。
我们令总体X为
\[
X = \left.
\begin{cases}
0,\quad 从袋中取得一白球,\\
1,\quad 从袋中取得一黑球.\\
\end{cases}
\right.
\]
则X服从01分布\(B(1,p)\)。

我们先进行有放回地摸球10次,其结果可用随机变量\(x_i\)表示,则\(x_1,x_2,⋯,x_10\)是… Read the rest

前言

我撰写本文的目的在于简单总结LaTex数学公式的语法。更具体的说,本文是面向仅需要使用LaTex来生成数学公式的初学者和希望通过mathjax插件在文章里插入数学公式的作者们。

本文分为上下两个部分,上半部分介绍基本的公式,看完你就能打出任何一本数学书籍中的单行公式了。下半部分难度稍高,包含介绍如何书写跨行公式、如何绘制表格等内容,具体见“LaTex数学公式简明教程(下)”。

所以本文不涉及与数学公式不太相关的LaTex内容。换句话说,不会出现对诸如“如何让小数点对齐”、“如何添加编号”问题的解答。

概述

LaTex 使用一种特殊的模式来排版数学符号和公式(mathematics)。
段落中的数学表达式应该置于 \(\)$$ 或者 \begin{math}\end{math} 之间,它们是嵌入文本的。
对于较大的数学式子,最好的方法是将它们放置于 \[\]\begin{displaymath}\end{displaymath} 之间。这样公式会单独占用一行。

Note:

  • 在使用Markdown编辑器时,\( 应该转义为\\(,换行的\\转义为\\\\,大括号\{转义为\\{
  • 这里的“转义”可以
Read the rest

前言

本文简述了离散型分布,阐明了泊松分布的来源,推导出泊松分布的公式,列举了泊松分布常用的情况,总结了泊松分布相关数值。

离散型分布概述

离散型分布包括几何分布、超几何分布、二项分布和泊松分布。其中二项分布和泊松分布最重要。

伯努利试验

对于一个试验(事件),如果重复发生的概率是独立地(上一次的结果不影响这次),那么它是独立试验。特别地,如果这个试验只存在两种结果,则称其为伯努利试验。

随机变量

对于有现实世界意义的数,我们根据意义的不同,将其划分为不同的类,而对于同一类的数,都使用同一个随机变量来称呼。比如,x年x月x日下雨量,我们就可以使用“随机变量X”来称呼;x年x月x日下雨可能性,我们就用“随机变量Y”来称呼。

需要明确的是:

  • 随机变量是一类有相同意义的数,而不是某个数
  • 当使用随机变量作为一个数时,我们需要指定这个随机变量。比如“2017年1月25日下雨量”在数学上才是一个具体的值。
  • 随机变量不一定能用除一一映射以外的方式拟合

几何分布

对于重复n次的伯努利试验,我们可以计算“首次为1是出现在第K次试验”:\({P_k} = p{q^{(k – 1)}}\)
如果一个… Read the rest

前言

本来想写一个关于感知机的总结,但如果要深入探讨,涉及的东西实在太多。仅仅浅尝辄止的话,那我就相当于照搬原文,违背了我写文章的初衷。

所以就单纯地把我自己写的感知机实现代码发上来,辅助大家学习。
我还提供了一个数据生成器,可以生成训练模型所需要的数据。

简单地对结果做了可视化,具体绘制代码见文末提供的github地址。跪求star=v=

感知机模型

感知机算法用于计算得到划分可二分数据集的超平面S。

我们定义优化函数为损失函数:
L=误分类点到超平面S的距离和

\(d = \frac{1}{{\left| w \right|}}|w \bullet {x_i} + b|\)

\(L = – \sum\limits_N {{y_i}} (w \bullet {x_i} + b)\)

采用随机梯度下降算法

\(\frac{{dL}}{{dw}} = – \sum\limits_N {{y_i}} {x_i}\)

故对于每一个误分类点

\(w = w + \eta {y_i}{x_i}\)

算法流程

输入:w, b;
训练:f(x)=sign(wx+b)

  1. 选取初值w0, b0
Read the rest

问题背景

  1. 我使用OneNote写总结。
  2. 在总结数论相关的算法时,文章会包含数学公式。
  3. 数学公式是MS特有的格式。
  4. 直接将OneNote复制到WordPress会导致几乎所有格式的丢失,数学公式无法显示

解决经历

  1. 尝试从OneNote导出。
    只支持导出doc和pdf
    1. 导出doc
      doc效果很好,但不能直接复制到WordPress中
    2. 导出pdf
      pdf效果很好,但唯一能插入到WordPress的方法是作为附件插入。即使安装了增强插件,也只是能将pdf显示出来。这样带来的问题是,搜索引擎无法抓取,显示效果也不好。

    3. 导出MS公式
      见后文

  2. 从word作为起点
    word可以导出的格式就有很多了,包括.html、.mht。

    1. 导出.html
      和pdf类似,无法作为文章一部分显示。
    2. 导出.mht
      和pdf类似,无法作为文章一部分显示。

    3. 通过Word,调用Server的PRC远程过程调用接口
      见后文

Word的“发布到博客功能”

在比较早的时候,WordPress可以设置启用xml-prc远程发布,现在应该是默认开启这个功能了。

但我在使用Word发布的时候出现了下图的情况:
WprdPress Math 1

经过WireShark抓包,大致原因是一段时间后Client端的… Read the rest

前言

本文浅析了SSL和SSH加密原理,分为加密基本知识和SSL/SSH协议内容两部分。

本文不涉及具体非对称加密算法。同时由于资料的零碎,虽然我尽量让文章有结构,但也难免有地方不太完美,请读者多多包涵。

基本知识

信息传递的三大风险

所有信息明文传播,都有三大风险。1

1. 窃听风险(eavesdropping):第三方可以获知通信内容。  
2. 篡改风险(tampering):第三方可以修改通信内容。  
3. 冒充风险(pretending):第三方可以冒充他人身份参与通信。

通过在传递源端(Client端)和目的端(Server端)的秘钥加密(假设其他所有人都不能解密信息),可以避免窃听风险和篡改风险:

1. 所有信息都是加密传播,第三方无法窃听。
2. 信息的末尾使用校验码,并和信息一同加密。如果密文被添加、删除或替换字段,校验码会不匹配。

对称加密和非对称加密

1976年以前,所有的加密方法都是同一种模式:
(1)甲方选择某一种加密规则,对信息进行加密;
(2)乙方使用同一种规则,对信息进行解密。

由于加密和解密使用同样规则(简称”密钥”)… Read the rest

重点

内存连续分配的三种方式,及可变分区分配的五种分配算法。 
内存离散分配的三种方式,分页管理涉及的页表、地址变换和快表。

程序的执行步骤

源程序需要经过编译、链接和装入之后,才能被处理器运行。
os6 1

在程序装入内存前,装入模块中给出的程序地址为程序的逻辑地址或相对地址。一个用户作业的所有装入模块的逻辑地址集合称为该作业的逻辑地址空间。
当用户作业被装入内存后,操作系统的存储管理器会通过名为地址变换/地址重定位的操作,将逻辑地址转换为物理地址。

Note:下面的“链接”和“装入”部分推荐先跳过,先看内存的连续分配和离散分配。

链接

  1. 静态链接
    若干个模块被依次链接成一个大模块
  2. 装入时动态链接
    说是在装入内存时,采用边装入边链接的链接方式。 那逻辑地址怎么确定呢?那如果装入时使用的静态重定位,那岂不是同时确定逻辑地址和物理地址?感觉怪怪的。
  3. 运行时动态链接
    连接过程被推迟到程序运行时进行,使用到才链接。

Note:不是很能理解模块和链接这两个词的意思。也没有在网上找到比较深入的解释,基本都是照本宣科。

装入

  1. 绝对装入
    直接将源程序放入内存即可,不对地址做任何变换。这要求程序员在编程时熟悉内存的使用状况。
    使用环境是单道批处理系统(单个程序进入计算机系
Read the rest