Juntao Tan的个人博客

争取为中文互联网留下点什么。


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

ubuntu下使用virtualenv新建一个python3虚拟环境

发表于 2019-04-28 | 更新于: 2019-04-28
字数统计: 377 | 阅读时长 ≈ 1

1. 虚拟环境的意义

因为不同的应用需要的环境可能是不同的,比方说A和B程序都需要用到第三方库C,但是A只能在C(version=1.0)下面运行,B只能在C(version=2.0)下面运行,这时要想同时运行A和B程序就会存在问题。

虚拟环境提供的好处就是,可以将不同应用程序所需要的环境隔离开来,每个程序有一套属于自己专属的环境,程序之间不会相互干扰。

2. 步骤

  • 首先需要安装 virtualenv

    1
    sudo apt-get install python-virtualenv
  • 接着创建 python3 的虚拟环境(ubuntu中默认安装了python2和python3)

    1
    2
    3
    4
    cd ~/1997tanjuntao/   # 切换到一个目录下面
    virtualenv -p /usr/bin/python3 py3env # 在当前目录下面创建新目录py3env(目录名可以自定义),py3env中就是虚拟环境
    # 如果是新建一个python2环境,可以这样做
    # virtualenv -p /usr/bin/python2 py2env
  • 接着激活环境

切换到py3env所在目录

1
cd ~/1997tanjuntao/

source命令激活虚拟环境

1
source py3env/bin/activate

这时候会发现命令行前面多了一个括号 (py3env)

这个新建的虚拟环境中使用的是python3,默认情况下,没有包含系统python3中安装的包,很干净。

这时候使用pip install安装的第三方包,只存在于这个虚拟环境中,不会影响系统中的python3

  • 退出虚拟环境
    1
    deactivate   # 一句话

参考文章

  • https://blog.csdn.net/qingche456/article/details/65465760

解决hexo中发布文章后图片无法显示的问题

发表于 2019-04-28 | 更新于: 2022-03-04
字数统计: 218 | 阅读时长 ≈ 1

1. 问题描述

默认情况下,在 hexo 中新建一篇markdown博文,在文章中插入本地图片,再部署到 github 上面,是无法显示这些图片的。

2. 解决方法

首先找到博客根目录下面的_config.yml文件,修改post_asset_folder的值为true.

接着 git bash 切换到博客根目录下面,安装第三方插件hexo-asset-image

1
npm install hexo-asset-image --save

接着hexo new "文章名" 新建一篇文章,会发现source/_posts/目录下面会生成一个和 markdown 文件同名的文件夹。再将当前这篇文章中需要插入的图片放到这个文件夹中,再到 markdown 中引用该文件夹中的图片,最后hexo g -> hexo d,就可以正常的查看这些图片了。

参考文章

  • https://blog.csdn.net/qq_38148394/article/details/79997971
  • https://www.jianshu.com/p/3db6a61d3782

论论文笔记: Manipulating Machine Learning: Poisoning Attacks and Countermeasures for Regression Learning

发表于 2019-04-18 | 更新于: 2019-04-21
字数统计: 1.2k | 阅读时长 ≈ 5

这篇文章发表于 2018 年,是第一篇针对线性回归模型提出投毒攻击方法的论文,实验证明:这种gradient-based的攻击方法效果很好;同时这篇文章里面也提出了一种防御方法:TRIM,实验结果也证明其防御效果很好。

主要贡献

  1. 第一篇针对linear regression进行poisoning attack的论文,之前的论文都是针对classification的模型
  2. 改造了一个原本针对分类问题进行投毒攻击的模型,将其应用在回归问题中,将攻击结果作为一个baseline
  3. 提出了一种基于数据集统计特征的攻击方法,只需要掌握有限的信息即可完成攻击
  4. 提出了防御算法TRIM,能够抵御众多的攻击,效果比传统的robust statistic好

方法

Linear Regression Model

传统的线性回归模型:
$$
\mathcal{L}\left(\mathcal{D}{\mathrm{tr}}, \boldsymbol{\theta}\right)=\underbrace{\frac{1}{n} \sum{i=1}^{n}\left(f\left(\boldsymbol{x}{i}, \boldsymbol{\theta}\right)-y{i}\right)^{2}}{\operatorname{MSE}\left(\mathcal{D}{\text { tr }}, \boldsymbol{\theta}\right)}+\lambda \Omega(\boldsymbol{w})
$$

根据$\Omega(w)$的不同,linear regression 可以分为下面4种

类型 $\Omega(w)$
Ordinary Least Square(OLS) $\Omega(w) = 0$
Ridge $\Omega(\boldsymbol{w})=\frac{1}{2}\ \boldsymbol{w}\ _{2}^{2}$
LASSO $\Omega(\boldsymbol{w}) = \ {w}_1\ $
Elastic-Net Regression $\Omega(w) = \rho\ w_1\ + (1-\rho)\frac{1}{2}\ w_2^2\ $

Adversarial Model

这里定义敌手模型。

敌手模型主要是用来对潜在用户进行分析建模,例如:假设攻击者掌握了多少知识、攻击者的目标是什么、攻击者的攻击策略是什么等。具体的可以从下面4个维度来对潜在的攻击者进行建模:

维度 描述
Adversary Goal 一般包含两种:availability attack & integrity attack.前者主要目的是使整个模型的可用性降低,后者主要是使模型在针对特定样本做 inference 时,准确率降低
Adversary Knowledge 一般包含两种:white-box & black-box. 对于前者,假设攻击者知晓:traning data & learning algorithm & loss function & model parameters;对于后者,假设攻击者只知晓:learning algorithm & loss function。但是这篇文章中,作者通过产生替代数据,同样可以得到 model parameters.
Adversary Capability 攻击者的能力,一般定义为其能往数据集中插入多少 poisoning samples. $n:original \ samples$, $p :poisoning \ samples$, $N = n + p:\ total \ smaples$, 定义poisoning rate $\alpha = p/n$
Adversary Strategy $\begin{array}{rl}{\arg \max {\mathcal{D}{p}}} & {\mathcal{W}\left(\mathcal{D}^{\prime}, \boldsymbol{\theta}{p}^{\star}\right)} \ {\text { s.t. }} & {\boldsymbol{\theta}{p}^{\star} \in \arg \min {\boldsymbol{\theta}} \mathcal{L}\left(\mathcal{D}{\mathrm{tr}} \cup \mathcal{D}_{p}, \boldsymbol{\theta}\right)}\end{array}$ 攻击者的目标主要是优化上面的目标函数:即如何插入 poisoning samples 来使得在 $D’$上的 loss 值最大.

攻击方法

攻击者的目标函数:
$$
\begin{array}{rl}{\arg \max {\mathcal{D}{p}}} & {\mathcal{W}\left(\mathcal{D}^{\prime}, \boldsymbol{\theta}{p}^{\star}\right)} \ {\text { s.t. }} & {\boldsymbol{\theta}{p}^{\star} \in \arg \min {\boldsymbol{\theta}} \mathcal{L}\left(\mathcal{D}{\mathrm{tr}} \cup \mathcal{D}_{p}, \boldsymbol{\theta}\right)}\end{array}
$$

注: 目标函数 $W$一般用 validation set 上面的 loss 来表示。loss 越大,表名攻击效果越好。对于 linear regression, loss function = Mean Square Error(MSE)

那么该插入什么样的 poisoning sample 才能使目标函数 $W$ 的值最大呢?

答案是:考虑梯度,考虑$W$对$D_p$的梯度。有了这个梯度,我们就能使用gradient ascent方法来更新$D_p$,直到最后$W$收敛,我们可以得到最佳的$D_p$.

但是这个优化问题是一个Bi-level问题,即约束条件本身也是一个优化问题,解决这种问题通常情况下是NP-hard.因为$x_c$和$W$并不是显示相关,而是通过$\theta$间接相关,因此作者通过chain rule来计算所需要的梯度 $\nabla_{\boldsymbol{x}_{c}} \mathcal{W}$:

$$
\nabla_{\boldsymbol{x}{c}} \mathcal{W}=\nabla{\boldsymbol{x}{c}} \boldsymbol{\theta}\left(\boldsymbol{x}{c}\right)^{\top} \cdot \nabla_{\boldsymbol{\theta}} \mathcal{W}
$$

注:$x_c$表示 poisoning sample 的 features

1. 首先求解公式的第二项 $\nabla_{\theta} \mathcal{W}$

第二项比较好计算,因为在线性回归问题中,目标函数表示的是在 validation set 上计算到的 loss:

$$
\mathcal{W}{\mathrm{val}}\left(\mathcal{D}{\mathrm{val}}, \boldsymbol{\theta}\right)=\frac{1}{m} \sum_{j=1}^{m}\left(f\left(\boldsymbol{x}{j}^{\prime}, \boldsymbol{\theta}\right)-y{j}^{\prime}\right)^{2}
$$

对这个函数求对$\theta$的偏导:
$$
\nabla_{\boldsymbol{\theta}} \mathcal{W}{\mathrm{val}}=\left[ \begin{array}{c}{\nabla{\boldsymbol{w}} \mathcal{W}{\mathrm{val}}} \ {\nabla{b} \mathcal{W}{\mathrm{val}}}\end{array}\right]=\left[ \begin{array}{c}{\frac{2}{m} \sum{j=1}^{m}\left(f\left(\boldsymbol{x}{j}\right)-y{j}\right) \boldsymbol{x}{j}} \ {\frac{2}{m} \sum{j=1}^{m}\left(f\left(\boldsymbol{x}{j}\right)-y{j}\right)}\end{array}\right]
$$

至此,公式第二项偏导数计算完毕,下面计算第一项。

2. 求解公式第二项 $\nabla_{\boldsymbol{x}{c}} \boldsymbol{\theta}\left(\boldsymbol{x}{c}\right)^{\top}$

防御方法

实验结果

SSH公钥方式登录原理以及对称加密和非对称加密知识点总结

发表于 2019-04-10 | 更新于: 2019-04-10
字数统计: 37 | 阅读时长 ≈ 1

先占坑,后面需要学习这块的内容,用博客记录下来,加深理解!

参考文章

  • https://blog.csdn.net/csm201314/article/details/78453579

Linux 系统中常见目录的含义及作用

发表于 2019-04-02 | 更新于: 2019-04-02
字数统计: 68 | 阅读时长 ≈ 1

前言

这篇博客将随着我对 Linux 系统的不断使用和了解而不定期更新。

常用目录的含义

目录 含义
/bin 存放 linux 中常用命令,如cd pwd ls等
/lib
/etc
/var

参考文章

  • http://blog.sina.com.cn/s/blog_684d52a90102uw30.html

安装固态硬盘

发表于 2019-04-02 | 更新于: 2019-04-03
字数统计: 1.3k | 阅读时长 ≈ 4

0.前言

以下全是个人的装机经验,没有很认真的写,只是打算做个记录,这样下次如果还需要干这类活时有个参考。不建议follow!!仅供一点参考。

笔记本老早就出现各种问题了,觉得应该是系统的问题而不是硬件的问题,于是寻思着重装一下系统。但是心里对重装系统有些抵触,因为会导致很多之前辛苦安装好配置好的软件无法使用。拖了好久,终于买了一块固态硬盘来重装系统…笔记本简直焕发第二春啊!

1. 数据备份

阅读全文 »

常用的正则匹配

发表于 2019-04-02 | 更新于: 2019-04-03
字数统计: 607 | 阅读时长 ≈ 2

正则表达式由两个部分组成:

1
/正则表达式主体/修饰符(可选)

其中修饰符主要用到两种:

  1. i: ignore 的意思。表示忽略大小写进行匹配。
  2. g: global 的意思。表示匹配整个字符串,否则第一次匹配成功后,不会继续匹配后面的字符串。

常用的特殊字符

阅读全文 »

Office 2016 激活方法

发表于 2019-04-02 | 更新于: 2019-04-02
字数统计: 255 | 阅读时长 ≈ 1

激活方法

  • 下载安装激活工具:链接: https://pan.baidu.com/s/1C3KqB4m7dnm9t2uKoDARHw 提取码: 9r4h

  • Windows 10 中可能会提示说下载的文件中包含病毒,导致下载不成功。这时候只需要在Windows defender中找到刚才那条阻止记录,并将其设置为允许,重新下载文件,就可以下载成功了。

  • 接下来执行压缩包里面的.exe文件,安装到最后,Windows defender又提示说检测到病毒xxx不能执行,安装失败之类的,这时候需要在windows安全中心,选择管理设置,然后关闭实时保护,然后以管理员方式运行压缩包里面的.bat文件,再重新安装刚才那个.exe文件,这时候就可以成功安装了,安装完之后再开启实时保护。

  • 启动软件,点击红色按钮,在打开 office 中的账户,发现已经激活成功了,简直神器!

参考文章

  • https://blog.csdn.net/weixin_40941966/article/details/80872533

使用 Github Pages + Hexo 搭建一个个人博客

发表于 2019-04-02 | 更新于: 2021-01-17 | 分类于 配置
字数统计: 2k | 阅读时长 ≈ 7

前言

其实在很早之前,曾使用 WordPress 搭建过一个个人博客。当时也是满满的激情,想模仿大佬们学着写技术博客。但是后来由于忙着追求GPA,加上自身懒惰自控力不行,博客就基本放弃更新了。

但是现在已经过上了研究生生活,每天有大把的时间可以由自己来支配,同时接触的东西也越来越多:做项目需要实时的学习一些技术和技巧,需要不断总结下来;各种学术报告会,听完之后需要回去再认真揣摩消化,变成自己的东西,这也需要总结下来。虽然之前也零零散散的做了一些笔记,但是组织松散不方便查找,遂考虑重新开通个人博客,将平常生活中的所学所思都记录下来,做技术和科研的积淀,争取能够厚积薄发!

开始搭建

阅读全文 »

Hello World

发表于 2019-03-31 | 更新于: 2019-03-31
字数统计: 73 | 阅读时长 ≈ 1

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

1…56
Juntao Tan

Juntao Tan

记录一些重要的技术点,方便自己查阅,也希望能够帮助到大家。

60 日志
6 分类
87 标签
GitHub LinkedIn Zhihu Douban E-Mail
0%
© 2019 — 2022 Juntao Tan, all rights reserved. | Site words total count: 50.9k
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
本站总访问量 次 | 有 人看过我的博客
Hosted by GitHub Pages