<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[@毛宏斌]]></title><description><![CDATA[随便记录一些东西，有用的没用的、方方面面；]]></description><link>https://blog.csdn.net/hello2mao</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; hello2mao]]></copyright><item><title><![CDATA[基于RSA盲签名的隐私集合求交PSI算法]]></title><link>https://blog.csdn.net/hello2mao/article/details/116943094</link><guid>https://blog.csdn.net/hello2mao/article/details/116943094</guid><author>hello2mao</author><pubDate>Mon, 17 May 2021 18:24:20 +0800</pubDate><description><![CDATA[记录一种PSI算法。


在《Practical Private Set Intersection Protocols with Linear Computational and Bandwidth Complexity》中提出了一种基于RSA的PSI算法。

其PSI的流程如下：



对此流程的分析可见：https://zhuanlan.zhihu.com/p/138557549。

此算法在两方ID数量差别很大的场景很有优势。例如，差几个数量级，10亿交10w，可以让拥有ID数量少的一方生成随机数..]]></description><category></category></item><item><title><![CDATA[常见的优化器（Optimizer）原理]]></title><link>https://blog.csdn.net/hello2mao/article/details/115892184</link><guid>https://blog.csdn.net/hello2mao/article/details/115892184</guid><author>hello2mao</author><pubDate>Thu, 22 Apr 2021 19:51:31 +0800</pubDate><description><![CDATA[记录下常见的优化算法。


一、概述

优化算法是训练过程中寻求最优解的方法，分类如下：



性能对比如下：



二、梯度下降法

2.1 梯度下降（GD）

梯度下降是通过 Loss 对的一阶导数来找下降方向，并且以迭代的方式来更新参数，更新方式为 :



其中，为学习率。

2.2随机梯度下降（SGD）

随机梯度下降法（Stochastic Gradient Descent，SGD）：均匀地、随机选取其中一个样本，用它代表整体样本，即把它的值乘以N，就相当于获得了梯度的无偏估计值。
...]]></description><category></category></item><item><title><![CDATA[交叉熵（Cross-Entropy）]]></title><link>https://blog.csdn.net/hello2mao/article/details/115899692</link><guid>https://blog.csdn.net/hello2mao/article/details/115899692</guid><author>hello2mao</author><pubDate>Tue, 20 Apr 2021 13:02:29 +0800</pubDate><description><![CDATA[目录

一、信息量

二、熵

三、相对熵（KL散度）

四、交叉熵

五、Ref


记录下交叉熵的知识点。


一、信息量

事件的信息量为：



二、熵

熵用来表示所有信息量的期望:



三、相对熵（KL散度）

KL 散度（Kullback-Leibler (KL) divergence）来衡量这两个分布的差异。

机器学习中，P往往用来表示样本的真实分布，Q用来表示模型所预测的分布。

KL散度的计算公式：



的值越小，表示q分布和p分布越接近

四、交叉熵

对KL散度进行变形...]]></description><category></category></item><item><title><![CDATA[RSA算法]]></title><link>https://blog.csdn.net/hello2mao/article/details/115627249</link><guid>https://blog.csdn.net/hello2mao/article/details/115627249</guid><author>hello2mao</author><pubDate>Mon, 12 Apr 2021 16:31:11 +0800</pubDate><description><![CDATA[目录

一、密钥组成

二、公私钥生成

三、PKCS#1结构

3.1 私钥

3.2 公钥




记录下RSA相关知识点。


一、密钥组成

(d, n)：私钥；
	(e, n)：公钥；
	n：模数（Modulus）；
	e：公钥指数（publicExponent），一般是固定值65537；
	d：私钥指数（privateExponent）；
二、公私钥生成

生成逻辑如下：



举例如下：



三、PKCS#1结构

3.1 私钥


RSAPrivateKey ::= SEQUENCE {.]]></description><category></category></item><item><title><![CDATA[LeNet GPU对比CPU]]></title><link>https://blog.csdn.net/hello2mao/article/details/115545537</link><guid>https://blog.csdn.net/hello2mao/article/details/115545537</guid><author>hello2mao</author><pubDate>Fri, 09 Apr 2021 12:14:35 +0800</pubDate><description><![CDATA[目录

一、概述

二、代码

三、测试结果




记录下LeNet在GPU和CPU下的一次测试。


一、概述

LeNet是卷积神经网络的祖师爷LeCun在1998年提出，用于解决手写数字识别的视觉任务。



二、代码


import torch
import torch.nn as nn
import torch.utils.data as Data
import torchvision
import time


USE_GPU = True

EPOCH = 10
BATCH_SIZE ..]]></description><category></category></item><item><title><![CDATA[C语言中的正则表达式使用]]></title><link>https://blog.csdn.net/hello2mao/article/details/115520207</link><guid>https://blog.csdn.net/hello2mao/article/details/115520207</guid><author>hello2mao</author><pubDate>Thu, 08 Apr 2021 14:48:20 +0800</pubDate><description><![CDATA[目录

一、概述

二、Demo

三、Ref




记录下C中的正则表达式及其使用Demo。


一、概述

在c语言中，用regcomp、regexec和regfree：

编译正则表达式，regcomp；
	匹配正则表达式，regexec；
	释放正则表达式，regfree；
函数原型如下：


/*
函数说明：Regcomp将正则表达式字符串regex编译成regex_t的形式，后续regexec以此进行搜索。
参数说明：
    Preg：一个regex_t结构体指针。
    Regex：正.]]></description><category></category></item><item><title><![CDATA[逻辑回归 Logistic Regression]]></title><link>https://blog.csdn.net/hello2mao/article/details/115409352</link><guid>https://blog.csdn.net/hello2mao/article/details/115409352</guid><author>hello2mao</author><pubDate>Tue, 06 Apr 2021 20:09:14 +0800</pubDate><description><![CDATA[记录下逻辑回归的知识点。


一、模型



其中：



二、损失函数

通常情况下，损失函数为平方损失函数：



但如果使用平方损失函数，那么就会使得我们的损失函数变成一个非凸函数，一个非凸函数包括很多个最低点，也就是包括很多个局部的最优解，这样就无法确定全局最优解，这不利于我们处理这个问题。

这里损失函数使用交叉熵：



即：



其中：y为label，y'为预测值，N为y的长度。

Q&amp;A

逻辑回归损失函数为什么不使用MSE


...]]></description><category></category></item><item><title><![CDATA[特征归一化/标准化（Feature scaling）]]></title><link>https://blog.csdn.net/hello2mao/article/details/115456864</link><guid>https://blog.csdn.net/hello2mao/article/details/115456864</guid><author>hello2mao</author><pubDate>Tue, 06 Apr 2021 11:28:45 +0800</pubDate><description><![CDATA[目录

一、概念和公式

二、代码示例




记录下归一化和标准化的概念


一、概念和公式

归一化和标准化都是对数据做变换的方式，将原始的数据转换到某个范围，或者某种形态。

min-max 归一化：



mean 归一化：



标准化：



其中和分别是样本数据的均值（mean）和标准差（std）。

二、代码示例


def normalization(data):
    _range = np.max(data) - np.min(data)
    return (data - np.]]></description><category></category></item><item><title><![CDATA[KVM 配置桥接设备]]></title><link>https://blog.csdn.net/hello2mao/article/details/115318088</link><guid>https://blog.csdn.net/hello2mao/article/details/115318088</guid><author>hello2mao</author><pubDate>Tue, 30 Mar 2021 10:09:37 +0800</pubDate><description><![CDATA[记录下为kvm配置bridge的一些知识点。


一、背景

libvirt配置kvm虚拟机的网络有两种方式，默认是NAT方式，但实际使用时，还是bridge的方式比较有用，设置好后客户机与互联网，客户机与主机之间的通信都很容易。

二、Bridge原理

Bridge方式即虚拟网桥的网络连接方式，是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。

网桥的基本原理就是创建一个桥接接口br0，在物理网卡和虚拟网络接口之间传递数据。



三、Bridge配置方式

以cen..]]></description><category></category></item><item><title><![CDATA[自动微分 ​​​​​​​​​​​​​​Automatic Differentiation]]></title><link>https://blog.csdn.net/hello2mao/article/details/115261871</link><guid>https://blog.csdn.net/hello2mao/article/details/115261871</guid><author>hello2mao</author><pubDate>Sat, 27 Mar 2021 22:45:40 +0800</pubDate><description><![CDATA[记录下深度学习中的自动求导。


一、概述

深度学习框架一般是通过自动求导（automatic differentiation）来完成导数的计算。

二、原理

系统会构建一个计算图（computational graph）

Ref

【Autograd】深入理解BP与自动求导
...]]></description><category></category></item><item><title><![CDATA[线性回归 Linear Regression]]></title><link>https://blog.csdn.net/hello2mao/article/details/115266473</link><guid>https://blog.csdn.net/hello2mao/article/details/115266473</guid><author>hello2mao</author><pubDate>Sat, 27 Mar 2021 16:09:36 +0800</pubDate><description><![CDATA[目录

一、模型

二、损失函数

三、解析解

四、梯度下降

五、小批量随机梯度下降




记录下线性回归的知识点。


一、模型



即：



矩阵-向量乘法表示：



二、损失函数

损失函数能够量化目标的实际值与预测值之间的差距。通常我们会选择非负数作为损失，且数值越小表示损失越小，完美预测时的损失为0。

回归问题中最常用的损失函数是平方误差函数。





三、解析解



四、梯度下降

梯度下降是一个用来求函数最小值的算法。



五、小批量随机梯度下降

在每次迭代中，...]]></description><category></category></item><item><title><![CDATA[标量、向量、矩阵的求导]]></title><link>https://blog.csdn.net/hello2mao/article/details/115261172</link><guid>https://blog.csdn.net/hello2mao/article/details/115261172</guid><author>hello2mao</author><pubDate>Sat, 27 Mar 2021 10:46:55 +0800</pubDate><description><![CDATA[目录

一、标量

二、向量

三、矩阵

四、举例




记录下标量、向量、矩阵的求导。


一、标量





二、向量













三、矩阵



四、举例


]]></description><category></category></item><item><title><![CDATA[python多线程读写锁]]></title><link>https://blog.csdn.net/hello2mao/article/details/115252260</link><guid>https://blog.csdn.net/hello2mao/article/details/115252260</guid><author>hello2mao</author><pubDate>Fri, 26 Mar 2021 17:58:41 +0800</pubDate><description><![CDATA[记录一个python多线程时使用读写锁的示例。



#!/usr/bin/env python3
""" Several users reading a calender, but only a few users updating it """

import threading
from readerwriterlock import rwlock

WEEKDAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday.]]></description><category></category></item><item><title><![CDATA[联邦学习中的安全聚合SMPC]]></title><link>https://blog.csdn.net/hello2mao/article/details/115185542</link><guid>https://blog.csdn.net/hello2mao/article/details/115185542</guid><author>hello2mao</author><pubDate>Wed, 24 Mar 2021 19:53:20 +0800</pubDate><description><![CDATA[目录

一、背景

1.1 联邦聚合与FedAVG

1.2 FATE

1.3密钥协商（Key Agreement）

1.4秘密共享（Secret Sharing）

二、安全聚合SMPC

2.1 原理

2.2 单掩码方案

2.4 双掩码完整方案

三、FATE安全聚合（SecureAggregation）的实现

3.1 FATE的安全聚合机制

3.2 FATE安全聚合的实现

四、总结




记录下联邦学习中的安全聚合机制SMPC。


一、背景

1.1 联邦聚合与FedAVG...]]></description><category></category></item><item><title><![CDATA[使用libvirt来管理qemu-kvm虚拟机]]></title><link>https://blog.csdn.net/hello2mao/article/details/115184684</link><guid>https://blog.csdn.net/hello2mao/article/details/115184684</guid><author>hello2mao</author><pubDate>Wed, 24 Mar 2021 19:24:30 +0800</pubDate><description><![CDATA[记录下libvirt的知识点。


一、Libvirt

libvirt是为了更方便地管理各种Hypervisor而设计的一套虚拟化库，libvirt作为中间适配层，让底层Hypervisor对上层用户空间的管理工具(virsh，virt-manager)做到完全透明，因为libvirt屏蔽了底层各种Hypervisor的细节，为上层管理工具提供了一个统一的、较稳定的接口（API）。



二、安装

在centos7.6上手动升级libvirt到5.8.0。


# 安装依赖包
yum -y inst..]]></description><category></category></item><item><title><![CDATA[隐私加密技术的细节对比]]></title><link>https://blog.csdn.net/hello2mao/article/details/115162590</link><guid>https://blog.csdn.net/hello2mao/article/details/115162590</guid><author>hello2mao</author><pubDate>Wed, 24 Mar 2021 09:56:49 +0800</pubDate><description><![CDATA[记录下几个隐私加密技术的对比。




摘自：https://www.qubi8.com/archives/690630.html
]]></description><category></category></item><item><title><![CDATA[隐私保护集合求交技术 (PSI)]]></title><link>https://blog.csdn.net/hello2mao/article/details/115093136</link><guid>https://blog.csdn.net/hello2mao/article/details/115093136</guid><author>hello2mao</author><pubDate>Tue, 23 Mar 2021 15:28:54 +0800</pubDate><description><![CDATA[记录下常见的PSI技术。


一、概述

隐私保护集合求交(Private Set Intersection, PSI) 技术有很强的应用价值。

PSI允许持有各自集合的多方来共同计算集合的交集，而计算的最后，各参与方只能得到正确的交集，而不会得到交集以外另一方集合中的任何信息。

下表给出了一些常见的PSI算法及其计算和通讯复杂度：



二、实现举例

2.1 百度--基于 MesaTEE 的 PSI 协议

基于Intel SGX的MesaTEE PSI方案如下：







可以看到：

...]]></description><category></category></item><item><title><![CDATA[格式保留加密（FPE）及其使用Demo]]></title><link>https://blog.csdn.net/hello2mao/article/details/115076295</link><guid>https://blog.csdn.net/hello2mao/article/details/115076295</guid><author>hello2mao</author><pubDate>Mon, 22 Mar 2021 16:36:35 +0800</pubDate><description><![CDATA[目录

一、原理


记录下格式保留加密算法及其Demo。


一、原理

格式保留加密（Format Preserving Encrypt，FPE）是一种可以保证密文与明文具有相同格式与长度的加密方式。

FPE

长2
]]></description><category></category></item><item><title><![CDATA[Bloom Filter 原理]]></title><link>https://blog.csdn.net/hello2mao/article/details/115075019</link><guid>https://blog.csdn.net/hello2mao/article/details/115075019</guid><author>hello2mao</author><pubDate>Mon, 22 Mar 2021 13:36:39 +0800</pubDate><description><![CDATA[&gt; 记录下布隆过滤器，摘抄自：https://crossoverjie.top/2018/11/26/guava/guava-bloom-filter/



首先需要初始化一个二进制的数组，长度设为 L（图中为 8），同时初始值全为 0 。
	当写入一个A1=1000的数据时，需要进行 H 次hash函数的运算（这里为 2 次）；与 HashMap 有点类似，通过算出的HashCode与 L 取模后定位到 0、2 处，将该处的值设为 1。
	A2=2000也是同理计算后将4、7位置...]]></description><category></category></item><item><title><![CDATA[线性代数知识点]]></title><link>https://blog.csdn.net/hello2mao/article/details/115046935</link><guid>https://blog.csdn.net/hello2mao/article/details/115046935</guid><author>hello2mao</author><pubDate>Sun, 21 Mar 2021 12:17:47 +0800</pubDate><description><![CDATA[目录

一、线性变换

二、标量

三、向量

四、矩阵

五、代码示例

一、线性变换

线性代数的本质：https://www.bilibili.com/video/BV1ys411472E
可以将线性变换看做对空间的挤压伸展，它保持网络线平行且等距分布，并且保持原点不变。



例如：



二维矩阵的复合变换：

二、标量



三、向量





四、矩阵

















五、代码示例


import torch

# 向量
x = torch.ones(4, dtype=to]]></description><category></category></item></channel></rss>