Jiahong的个人博客

凡事预则立不预则废


  • Home

  • Tags

  • Archives

  • Search

Hexo——使用总结

Posted on 2017-09-09

Hexo 使用总结


在博客中引用自己的博客

  • 在 _config.yml 中设置属性

    1
    permalink: :title.html
  • 引用方式

    1
    2
    3
    # 引用文档,以引用本文为例
    # 引用的应该是生成时使用的文件路径或者title,后面跟上.html,但是还要根据不同设置来修改,总之就是访问时的链接
    [引用示例](/Notes/Hexo/Hexo——使用总结.html "/Notes/Hexo/Hexo——使用总结.html")

引用示例


导入图片

  • 在同目录下新建与Markdown文档文件名相同的文件夹,将图片存入文件夹中
  • 在Markdown文档中使用特殊语法导入
    1
    {% asset_img picture.png descreption %}

插入LaTex公式

LaTex公式

  • 在线公式编辑地址
  • LaTex公式用法参见LaTex——笔记

借助工具插入公式

MathJax引擎(推荐)
  • 这种方式只需要在是实现时首先添加引擎代码,后面就可以完全像是Latex一样写公式
头部添加
  • 添加头部如下
    1
    <script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script>
1
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>
* 说明:
    * 第一个头部可用,在各种浏览器均能正确加载
    * 第二个涉及到https的安全性问题,在部署到GitHub时,某些浏览器上不能正确加载
  • 测试说明:
    • yilla主题下Chrome和Firefox浏览器中不添加上面的头部当前文档也能识别出公式, 其他浏览器未测试
    • next主题下必须加上这个头部才行
写公式
  • 行内公式
    1
    公式如下:\\(\Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}\\)所示

公式如下:\(\Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}\)所示

  • 行间公式
    1
    公式如下:$$\Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$$所示

公式如下:$$\Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$$所示

  • 公式等号对齐

    • 公式如下:

      1
      2
      3
      4
      5
      6
      7
      8
      $$
      \begin{align}
      Q(\theta, \theta^{i}) &= E_{Z}[logP(Y,Z|\theta)|Y,\theta^{i}] \\\\
      &= E_{Z\sim P(Z|Y,\theta^{i})}[logP(Y,Z|\theta)] \\\\
      &= \sum_{Z} P(Z|Y,\theta^{i})logP(Y,Z|\theta) \\\\
      &= \sum_{Z} logP(Y,Z|\theta)P(Z|Y,\theta^{i})
      \end{align}
      $$

$$
\begin{align}
Q(\theta, \theta^{i}) &= E_{Z}[logP(Y,Z|\theta)|Y,\theta^{i}] \\
&= E_{Z\sim P(Z|Y,\theta^{i})}[logP(Y,Z|\theta)] \\
&= \sum_{Z} P(Z|Y,\theta^{i})logP(Y,Z|\theta) \\
&= \sum_{Z} logP(Y,Z|\theta)P(Z|Y,\theta^{i})
\end{align}
$$

Google Chart服务器
  • 引用方式
    1
    2
    # <img src="http://chart.googleapis.com/chart?cht=tx&chl=Latex公式" style="border:none;">
    <img src="http://chart.googleapis.com/chart?cht=tx&chl=\Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}" style="border:none;">
forkosh服务器
  • 引用方式
    1
    2
    <img src="http://www.forkosh.com/mathtex.cgi? Latex公式">
    <img src="http://www.forkosh.com/mathtex.cgi?\Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}">

LaTex——笔记

Posted on 2017-09-09

LaTex使用笔记


LaTex公式相关

  • LaTex公式等号对齐

    1
    2
    3
    4
    5
    \begin{\align}
    L(x)&=U(x) \\
    &=N(x)\\
    &=M(x)
    \end{\align}
    • 其中\\表示换行&表示每一行的对齐点
    • 在Markdown文档中要注意\\\\才对应此处的\\,因为\在Markdown文档中是转义字符
  • LaTex特殊公式总结

LaTex 符号
\partial \(\partial\)
\nabla \(\nabla\)
\infty \(\infty\)
\int \(\int\)
\iint \(\iint\)
\iiint \(\iiint\)
\oint \(\oint\)
\triangle \(\triangle\)
\bigtriangledown \(\bigtriangledown\)
\triangleleft \(\triangleleft\)
\triangleright \(\triangleright\)
  • 公式空格
LaTex 空格效果
a\qquad b \(a\qquad b\)
a\quad b \(a\quad b\)
a\ b \(a\ b\)
a; b \(a; b\)
a, b \(a, b\)
ab \(ab\)
a!b \(a!b\)
  • 公式后面你加上序号
    1
    $$y(x) = x^{2} \tag{1}$$

$$y(x) = x^{2} \tag{1}$$

Anaconda——安装和常用命令

Posted on 2017-09-01

Anaconda安装和使用


安装

  • Anaconda官网下载安装即可

使用

管理conda版本

  • 检查conda版本

    1
    conda --version
  • 升级版本

    1
    conda update conda

管理环境

  • 创建环境

    1
    2
    3
    conda create --name your_env_name python=3.6
    # <==>
    conda create -n your_env_name python=3.6
  • 激活环境

    1
    source activate your_env_name # On Windows, remove the word 'source'
  • 列出所有环境

    1
    2
    3
    4
    5
    conda info --envs 
    # or
    conda info -e
    # or
    conda env list
  • 退出当前环境

    1
    source deactivate # On Windows, remove the word 'source'
  • 复制一个环境

    1
    conda create -n new_env_name --clone old_env_name
  • 删除环境

    1
    conda remove -n your_env_name

管理包

  • 查看已经安装的包

    1
    conda list
  • 向指定环境中安装包

    1
    conda install --name your_env_name package
    • 如果没有--name参数,package默认安装到当前环境中
    • tips: 一般来说当需要在同一个环境下面安装的包比较多时,我们会先激活想要操作的环境,然后直接不使用 --name参数安装

Anaconda——conda和pip管理包的区别

Posted on 2017-08-30

conda和pip对包的管理有什么区别?

  • conda 使得我们可以在conda环境中安装任何语言的包(包括C语言和Python)
  • pip 使得我们可以在任何环境中安装Python包
管理工具 conda pip
使用环境 conda环境 任意平台
包语言 任意语言 Python语言

管理包命令

  • conda

    • 安装包

      1
      2
      # 从虚拟环境 your_env_name 中安装 packge_name包
      conda install -n your_env_name package_name
    • 删除包

      1
      2
      # 在虚拟环境 your_env_name 中删除 package_name包
      conda remove -n your_env_name package_name
  • pip

    • 安装包

      1
      2
      # 安装包到默认路径
      pip install package_name
    • 卸载包

      1
      2
      # 删除包
      pip uninstall package_name
    • 查看已经安装的包

      1
      2
      3
      4
      # 列出所有包
      pip list
      # 查看指定包的详细信息
      pip show --files package_name
    • 升级包

      1
      pip install --upgrade package_name

关于conda 命令更多详情参考Anaconda——安装和常用命令

Anaconda——conda命令不能执行

Posted on 2017-08-30

出现包导入异常的错误

  • 错误如下

ImportError: No module named conda.cli

  • 解决方案:重装anaconda

    • 官网上下载anaconda的安装包,注意Python2,和Python3不能错
    • 执行时加上-u参数即可
      1
      bash Anaconda2-2018.12-Linux-x86_64.sh -u
  • 说明:

    • 上面的修复方案不会影响其他第三方包
    • 其他conda环境相关的问题也可以通过重装解决

ML——SVM-支持向量机

Posted on 2017-06-20

手动推导流程

  • 假设有N样本:\(X = (x_{1}, x_{2}, x_{3},\dots x_{N})\)
    • 样本点为: \(((x_{1}, y_{1}), (x_{2}, y_{2}), (x_{3}, y_{3}),\dots (x_{N}, y_{N}))\)
  • 假设\(x_{i}\)等所有向量都为列向量, \(w\)为行向量(这里是为了推到方便,与<<统计学习方法>>一致)
    • 实际代码实现时与行列向量无关,取二者的内积np.inner(w,x)即可

确定分类决策函数

  • 分类超平面
    $$w^{\star}x + b^{\star} = 0$$
    • 分类超平面由\((w, b)\)唯一确定(注意: LR的分类超平面由\((w, b)\)和阈值唯一确定)
  • 分类决策函数
    $$f(x) = sign(w^{\star}x + b^{\star})$$

确定优化目标

间隔定义
  • 函数间隔定义
    • 点\((x_{i}, y_{i})\)到超平面\((w,b)\)的函数间隔为:
      $$\hat{\gamma}_{i} = y_{i}(w\cdot x_{i} + b)$$
    • 所有训练样本\(X = (x_{1}, x_{2}, x_{3},\dots x_{m})\)到超平面\((w,b)\)的函数间隔为:
      $$\hat{\gamma} = \min_{i=1,\dots,N}\hat{\gamma}_{i}$$
  • 几何间隔的定义
    • 点\((x_{i}, y_{i})\)到超平面\((w,b)\)的几何间隔为:
      $$\gamma_{i} = y_{i} (\frac{w}{||w||}\cdot x_{i} + \frac{b}{||w||})$$
    • 进一步推导得:
      $$\gamma_{i} = \frac {y_{i}(w\cdot x_{i} + b)}{||w||} = \frac{\hat{\gamma}}{||w||}$$
    • 所有训练样本\(X = (x_{1}, x_{2}, x_{3},\dots x_{m})\)到超平面\((w,b)\)的几何间隔为:
      $$\gamma = \min_{i=1,\dots,N}\gamma_{i}$$
确定优化目标
  • 求解能够正确划分训练数据集并且几何间隔最大的分类超平面(分离超平面)

  • 定义约束优化问题:
    $$
    \begin{align}
    &\max_{w,b} \quad \gamma \\
    &s.t. \quad y_{i} (\frac{w}{||w||}\cdot x_{i} + \frac{b}{||w||}) \geq \gamma, i = 1,2,\dots,N
    \end{align}
    $$

  • 将\(\gamma = \frac{\hat{\gamma}}{||w||}\)带入并在条件中消去分母上的\(||w||\),得
    $$
    \begin{align}
    &\max_{w,b} \quad\frac{\hat{\gamma}}{||w||} \\
    &s.t.\quad y_{i} (w\cdot x_{i} + b) \geq \hat{\gamma}, i = 1,2,\dots,N
    \end{align}
    $$

  • 上面的式子中,函数间隔\(\hat{\gamma}\)的值不影响最优化问题的解,于是我们设置\(\hat{\gamma}=1\)

    • 因为将参数\((w,b)\)同时扩大或缩小为\((\lambda w,\lambda b)\), 函数间隔对应变成\(\lambda \hat{\gamma}\)
    • 两个等价的优化方法:
      • 设置\(\hat{\gamma}=1\)再对原始问题进行最优化得到参数\((w^{\star},b^{\star})\)
      • 先对原始问题最优化求得参数\((w,b)\),再将参数同时扩大或缩小为\((\lambda w,\lambda b)\),使得\(\lambda \hat{\gamma}=1\)得到的最终参数\((w^{\star},b^{\star}) = (\lambda w,\lambda b)\)等价
        $$
        \begin{align}
        &\max_{w,b}\quad \frac{1}{||w||} \\
        &s.t.\quad y_{i} (w\cdot x_{i} + b) \geq 1, i = 1,2,\dots,N
        \end{align}
        $$
  • 进一步分析,由于最大化\(\frac{1}{||w||}\)与最小化\(\frac{1}{2}||w||^{2}\)等价(这里\(w\)为行向量时,\(||w||^{2} = ww^{T}\)), 最优化问题可等价表示为:
    $$
    \begin{align}
    &\min_{w,b}\quad \frac{1}{2}||w||^{2} \\
    &s.t.\quad y_{i} (w\cdot x_{i} + b) \geq 1, i = 1,2,\dots,N
    \end{align}
    $$

    • 这是一个凸二次规划问题(convex quadratic programming),凸优化问题参考Math——凸二次优化问题和拉格朗日对偶性
优化问题的求解(对偶)
  • 首先将SVM优化问题转换为一般凸优化形式
    $$
    \begin{align}
    &\min_{w,b}\quad \frac{1}{2}||w||^{2} \\
    &s.t.\quad 1 - y_{i} (w\cdot x_{i} + b) \leq 0, i = 1,2,\dots,N
    \end{align}
    $$
  • 由上述优化问题定义拉格朗日函数
    $$
    \begin{align}
    L(w,b,\alpha) = \frac{1}{2}||w||^{2} + \sum_{i=1}^{N}\alpha_{i}(1-y_{i}(w\cdot x_{i} + b))
    \end{align}
    $$
  • 根据拉格朗日对偶性,
    $$
    \begin{align}
    \min_{w,b}\max_{\alpha:\alpha_{i} \geq 0}L(w,b,\alpha) = \max_{\alpha:\alpha_{i} \geq 0}\min_{w,b}L(w,b,\alpha)
    \end{align}
    $$
    • 左边:原始问题为极小极大问题
    • 右边:对偶问题为极大极小问题
  • 解对偶问题:
  • 先求
    $$
    \begin{align}
    \min_{w,b}L(w,b,\alpha)
    \end{align}
    $$
  • 求导数为0得
    $$
    \begin{align}
    \nabla_{w}L(w,b,\alpha) &= w - \sum_{i=1}^{N}\alpha_{i}y_{i}x_{i} = 0 \\
    \nabla_{b}L(w,b,\alpha) &= \sum_{i=1}^{N}\alpha_{i}y_{i} = 0
    \end{align}
    $$
  • 解得:
    $$
    \begin{align}
    &w = \sum_{i=1}^{N}\alpha_{i}y_{i}x_{i} \\
    &\sum_{i=1}^{N}\alpha_{i}y_{i} = 0
    \end{align}
    $$
  • 代入原来的拉格朗日函数有:

$$
\begin{align}
\min_{w,b}L(w,b,\alpha) &= \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_{i}\alpha_{j}y_{i}y_{j}(x_{i}\cdot x_{j}) + \sum_{i=1}^{N}\alpha_{i}(1-y_{i}(\left [\sum_{j=1}^{N}\alpha_{j}y_{j}x_{j}\right]\cdot x_{i} + b)) \\
&= \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_{i}\alpha_{j}y_{i}y_{j}(x_{i}\cdot x_{j}) - \sum_{i=1}^{N}\alpha_{i}y_{i}\left [\sum_{j=1}^{N}\alpha_{j}y_{j}x_{j}\right]\cdot x_{i} + \sum_{i=1}^{N}\alpha_{i}y_{i}b + \sum_{i=1}^{N}\alpha_{i}\\
&= \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_{i}\alpha_{j}y_{i}y_{j}(x_{i}\cdot x_{j}) - \sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_{i}y_{i}\alpha_{j}y_{j}(x_{j}\cdot x_{i}) + \sum_{i=1}^{N}\alpha_{i}y_{i}b + \sum_{i=1}^{N}\alpha_{i}\\
&= -\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_{i}\alpha_{j}y_{i}y_{j}(x_{i}\cdot x_{j}) + 0 + \sum_{i=1}^{N}\alpha_{i}\\
&= -\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_{i}\alpha_{j}y_{i}y_{j}(x_{i}\cdot x_{j}) + \sum_{i=1}^{N}\alpha_{i}
\end{align}
$$

  • 上面的\(\min_{w,b}L(w,b,\alpha)\)对\(\alpha\)求极大值有:
    $$
    \begin{align}
    \max_{\alpha} \quad &-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_{i}\alpha_{j}y_{i}y_{j}(x_{i}\cdot x_{j}) + \sum_{i=1}^{N}\alpha_{i} \\
    s.t. \quad &\sum_{i=1}^{N}\alpha_{i}y_{i} = 0 \\
    \quad &\alpha_{i} \geq 0, i = 1,2,\dots,N
    \end{align}
    $$

  • 转换为一般优化问题
    $$
    \begin{align}
    \min_{\alpha} \quad &\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_{i}\alpha_{j}y_{i}y_{j}(x_{i}\cdot x_{j}) - \sum_{i=1}^{N}\alpha_{i} \\
    s.t. \quad &\sum_{i=1}^{N}\alpha_{i}y_{i} = 0 \\
    \quad &-\alpha_{i} \leq 0, i = 1,2,\dots,N
    \end{align}
    $$

  • 假设上面的式子能够求得\(\alpha\)的解为:
    $$
    \begin{align}
    \alpha^{\star} = (\alpha_{1}^{\star}, \alpha_{2}^{\star},\dots, \alpha_{N}^{\star})
    \end{align}
    $$

  • 根据拉格朗日对偶问题与原始问题的解对应的条件,Math——凸优化问题和拉格朗日对偶性,如果上面的式子中存在下标\(j\),满足\(-\alpha_{j}^{\star} < 0\),即满足:
    $$\exists j \quad \alpha_{j}^{\star} > 0$$

  • 那么最终可求得:
    $$
    \begin{align}
    &w^{\star} = \sum_{i=1}^{N}\alpha_{i}^{\star}y_{i}x_{i} \\
    \end{align}
    $$

  • \(b^{\star}\)的表达式由\(\alpha_{j}^{\star} > 0\),和KKT条件\(\alpha_{j}^{\star}(y_{j}(w^{\star}\cdot x_{j} + b^{\star})-1) = 0\)可解得:
    $$
    \begin{align}
    y_{j}(w^{\star}\cdot x_{j} + b^{\star})-1 = 0 \\
    \end{align}
    $$

  • 注意到\(y_{j}\in \{-1, 1\}\), 所以\(y_{j}^{2}=1\)
    $$
    \begin{align}
    y_{j}^{2}(w^{\star}\cdot x_{j} + b^{\star})-y_{j} = 0 \\
    w^{\star}\cdot x_{j} + b^{\star} = y_{j} \\
    \end{align}
    $$

  • 所以有
    $$
    \begin{align}
    b^{\star} &= y_{j} - w^{\star}\cdot x_{j} \\
    &= y_{j} - \sum_{i=1}^{N}\alpha_{i}^{\star}y_{i}(x_{i}\cdot x_{j})
    \end{align}
    $$

  • 综合\(w^{\star}\)和\(b^{\star}\)的表达式,我们有分类超平面为:
    $$
    \begin{align}
    w^{\star}x + b^{\star} &= 0 \\
    \sum_{i=1}^{N}\alpha_{i}^{\star}y_{i}(x_{i}\cdot x) + b^{\star} &= 0
    \end{align}
    $$

  • 分类决策函数为:
    $$
    \begin{align}
    f(x) &= sign(w^{\star}x + b^{\star}) \\
    f(x) &= sign\left (\sum_{i=1}^{N}\alpha_{i}^{\star}y_{i}(x_{i}\cdot x) + b^{\star}\right )
    \end{align}
    $$

    • 这就是分线性可分SVM的对偶形式
    • 分类决策函数只与待预测的样本\(x\)和已有训练数据\(x_{j}\)的输入内积\((x_{j}\cdot x)\)相关
      • 注意\(b^{\star}\)是通过原始训练样本算出来的定值,\(b^{\star}, w^{\star}\)的值与待预测的未知样本无关,训练样本确定,参数就确定了, 内积的出现是在加入位置样本后\(w^{\star}\cdot x\)产生的
    • SVM的对偶形式使得我们可以用核函数来扩展SVM(非线性核函数可使得SVM能解决非线性问题)

支持向量

  • 优化问题的推导过程中,又一步,对偶问题与原始问题能够相等的条件是存在下标\(j\),满足\(-\alpha_{j}^{\star} < 0\),即满足:
    $$\exists j \quad \alpha_{j}^{\star} > 0$$
  • 上面的\(j\)对应的样本点\((x_{j}, y_{j})\)就是支持向量
    • 支持向量一定在间隔边界上:
      $$y_{j}(w^{\star}\cdot x_{j}+b^{\star})-1 = 0$$
    • 或者
      $$w^{\star}\cdot x_{j}+b^{\star} = \pm 1$$
      • \(y_i\) 的取值为 1 或者 -1
    • 实际上,在训练时参数\((w^{\star}, b^{\star})\)只依赖于\(\alpha_{j} > 0\)的点,即只依赖支持向量
      $$
      \begin{align}
      &w^{\star} = \sum_{i=1}^{N}\alpha_{i}^{\star}y_{i}x_{i} \\
      &b^{\star} = y_{j} - \sum_{i=1}^{N}\alpha_{i}^{\star}y_{i}(x_{i}\cdot x_{j})
      \end{align}
      $$
    • 所有非支持向量对应的\(\alpha_{i} = 0\),所以对最终参数\((w^{\star}, b^{\star})\)只与支持向量相关

核函数

  • \(\phi(x)\)定义为从输入空间到希尔伯特空间的映射
    $$
    \begin{align}
    K(x,z) = \phi(x)\phi(z)
    \end{align}
    $$
  • 将SVM对偶形式中的内积\((x_{i}\cdot x_{j})\)用核函数\(K(x_{i},x_{j}) = \phi(x_{i})\phi(x_{j})\)来替代即可在SVM中应用核技巧

常用核函数

  • 多项式核函数
    $$K(x,z) = (x\cdot z + 1)^{p}$$
  • 高斯核函数
    $$K(x,z) = e^{\left( -\frac{||x-z||^{2}}{2\sigma^{2}}\right )}$$
  • 字符串核函数
    [待更新]

序列最小最优化算法(SMO)

  • 为什么要用SMO?
    • 前面我们的推导将 SVM的参数求解 转化为了一个求解凸二次优化的问题
    • 凸二次优化问题有全局最优解(有很多优化算法可以求解凸二次优化问题)
    • 但是当样本量太大时,普通的凸二次优化算法会变得十分低效,导致实际操作中无法使用
    • 所以我们需要一个能高效实现的算法 SMO
  • 基本思路
    • 如果所有变量的解都满足最优化问题的KKT条件,那么这个最优化问题的解就得到了
      • 原因: KKT条件是该最优化问题的充要条件
    • 否则,存在某些解不满足KKT条件,选择两个变量,固定其他变量,
      • 两个变量中其中一个是最不满足KKT条件的变量,
      • 另一个在第一个确定后,自动由约束条件确定下来
    • 针对这两个变量构建二次规划问题的解,这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解
      • 原因: 因为二次规划问题的目标函数值变得更小
      • 此时可通过解析方法求解(由于只有两个变量,比较简单),整个算法的速度会很快
    • SMO算法不断的将原问题分解为子问题,迭代更新参数,每次更新两个参数,最终得到近似解
  • 优点:
    • 训练速度快

补充说明

SVM需要特征归一化

是必要的

  • 因为SVM寻找的是所谓的间隔(margin), 就是两个支持向量的间隔
  • 如果不归一化的话, 这个间隔会因为不同特征的单位等, 数值被放大或者缩小, 从而造成无法评估间隔, 所以归一化对于SVM很重要
  • 线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization
    • 个人理解: 非线性的SVM其实也应该归一化,不然核函数映射到高位空间后以后还是可能受数值影响?

损失函数自带正则

  • 由于优化目标中就自带了参数 \(\frac{1}{2}||w||^2\), 所以SVM实际上已经自己带了L2正则化了
  • 这也是SVM也叫结构风险最小化算法的原因
    • 结构风险最小化就是模型复杂度最小化

Bash——awk和xargs命令的使用

Posted on 2017-06-06

用于在linux bash中设计处理terminal输出自动删除等问题


使用实例

sudo docker images | grep '<none>' | awk '{print $3}' | xargs sudo docker rmi 

上面的代码是删除所有名字为<none>的docker镜像


awk

awk '{print $3}' //读取每一行的第三列的值

xargs

xargs sudo docker rmi //将管道传递过来的所有行添加到后面的命令后面,等价于sudo docker rmi <rows>

Bash——命令分隔符

Posted on 2017-06-06

在Linux Bash命令中,有;,&&,||三种命令链接方式,本文将介绍他们之间的区别


三种连接方式的区别

  • ;
    • 各个命令之间相互独立,不管前面的语句是否成功执行,所有命令都将被执行
  • &&
    • 命令依次被执行,只有当前面的命令执行成功后,后面的命令才会被执行
  • ||
    • 命令依次被执行,只有当前面的命令执行失败后,后面的命令才会被执行

Linux——用户管理

Posted on 2017-06-06

用某个其他用户身份打开可视化软件

在某个用户不能登录桌面时,可能可以通过进入root用户创建一个新的用户,然后用该用户登录桌面

  • 不同用户之间的软件可能不共享,所以要想打开其他用户装的软件可以考虑从终端切换到其他用户,然后再打开软件
  • 不同用户的git用户信息等都不同,也需要切换到其他用户使用
  • 为了避免用户权限问题,打开软件时都从终端用文件所属用户的身份打开即可

Gradient——梯度的理解

Posted on 2017-05-09

梯度方向是函数局部上升最快的方向


定义

  • 对函数\(f(x, y, z)\)而言
  • 方向导数:各个方向的导数,函数,标量
    • 关于x, y, x的偏导数: \(\frac {\partial f}{\partial x}, \frac {\partial f}{\partial y}, \frac {\partial f}{\partial z}\)
    • 对特定的某一点\((x_{0}, y_{0}, z_{0})\)而言,改点的偏导数是将对应的值带入后得到的数值,是一个确定的数值
  • 梯度:各个方向导数组成的向量,每一维为一个方向导数,矢量
    • 梯度: \((\frac {\partial f}{\partial x}, \frac {\partial f}{\partial y}, \frac {\partial f}{\partial z}\)),一个向量
    • 梯度方向表示函数局部上升最快的方向
    • 梯度的模\(|\nabla f|\)表示变化率

直观理解

  • 一维函数中,代表参数(自变量)的点在一条直线上运动,所以梯度的方向有正向和负向
  • 二维函数中,代表参数(自变量)的点在一个平面上运动,所以梯度的方向有无数种,但都在二维平面上
  • 三维函数中,代表参数(自变量)的点在一个空间中运动,所以梯度的方向有无数种,但都在三维空间中
  • 无论何时,梯度方向是函数上升最快的方向,指明参数朝着这个方向移动时,函数上升的速度最快
  • 梯度下降法中,求取梯度的意义就在于知道函数上升或者下降最快的方向

关于梯度的模\(|\nabla f|\)

  • 梯度的方向与参数(自变量)的变化相关,梯度的模\(|\nabla f|\)与函数变化相关
  • 梯度的模可以理解为变化率,也就是在梯度对应的方向上移动单位长度后,函数能上升的数值大小为\(|\nabla f|\)(当然,这是按照当前点周围的极小的曲面拟合出来的平面计算得到的数值,不是真正的函数数值)
  • 梯度下降法中,梯度的方向指明了参数移动的方向,梯度的模暗示着参数移动时函数的增量大小
  • 但为什么梯度下降法中,保留着梯度的模?而不是将梯度向量变成单位向量?梯度的模有什么特殊的意义吗?
    • 一个猜想:在梯度下降法时,如果超参数步长\(\alpha\)不变的话,每次迭代时参数(自变量)真正移动的长度是\(\alpha\times |\nabla f|\),此时随着迭代次数的增加,\(|\nabla f|\)值会越来越小(可以证明,因为越来越接近最地点,函数变化率越来越小),这会导致\(\alpha\times |\nabla f|\)越来越小,从而减少震荡?
    • 梯度的模的意义可用数学证明,移动梯度的模的\(\alpha\)倍是最优的,详情参考我的博客ML——最优化方法-无约束参数优化方法中用一阶泰勒展开推导梯度下降法的过程
      • 基本思路,将函数在参数的某个值\(\theta_{t} + \delta\)处一阶泰勒展开,然后对\(\delta\)加上正则项.最后在直接求导即可得到梯度下降法的更新表达式

参考博客

  • 链接: https://choibunbing.com/2019/04/25/为什么梯度方向是函数局部上升最快的方向/
1…181920
Joe Zhou

Joe Zhou

世界上只有一种真正的英雄主义,那就是在认清生活真相之后依然热爱生活。 ——罗曼·罗兰

195 posts
38 tags
GitHub E-Mail
© 2024 Joe Zhou
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4