BruceFan's Blog

Stay hungry, stay foolish

0%

这次主要是调试Android system/bt目录下的代码,也就是蓝牙相关的代码,是源于对几个CVE(cve-2018-9355~cve-2018-9362)的学习,这几个CVE是蓝牙相关的漏洞。

蓝牙相关代码分析

因为之前对蓝牙相关代码没有了解过,所以先对AOSP中关于蓝牙的代码进行学习。首先是从Android应用层编程开始,几个基本操作:

阅读全文 »

继续上一篇文章的内容,我们已经有一个可以证实的区块链了,但是现在链中只保存着一些无用的信息,这篇文章中我们将会实现简单的钱包(wallet)交易(transaction),用交易来替换这些数据,创建一个非常简单的加密货币:”NoobCoin”。

阅读全文 »

支持向量机是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题。
支持向量机学习方法包含构建由简至繁的模型:

  • 当训练数据线性可分时,通过硬间隔最大化(hard margin maximization),学习一个线性的分类器,即线性可分支持向量机。
  • 当训练数据近似线性可分时,通过软间隔最大化(soft margin maximization),也学习一个线性的分类器,即线性支持向量机。
  • 当训练数据线性不可分时,通过使用核技巧(kernel trick)及软间隔最大化,学习非线性支持向量机。
阅读全文 »

分类决策树模型是一种描述对实例进行分类的树形结构,决策树由结点和有向边组成,结点有两种类型:内部结点和叶结点。内部结点表示一个特征或属性,叶结点表示一个类。
用决策树分类,从根结点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点;这时,每一个子结点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶结点。最后将实例分到叶结点的类中。决策树学习的目的是为了产生一个泛化能力强,即处理未见示例能力强的决策树,其基本流程遵循简单且直观的分而治之(divide-and-conquer)策略。

阅读全文 »

当构建神经网络时,我们经常想把计算分配到各个layer,一些可学习参数(learnable parameter)在学习的过程中会被优化。在PyTorch中nn包提供了计算图(computational graph)的高级抽象,nn包定义了一系列Module,和神经网络的layer大致相同,Module接收输入Tensor,计算输出Tensor,同时也保存中间状态,如包含可学习参数的Tensor。nn包也定义了一系列有用的损失函数。

阅读全文 »

之前听过前向传播和反向传播,也看到项目中有这两个步骤,但是不知道具体是干什么的,在看PyTorch官方教程的时候看到一个用numpy实现的2层神经网络,里面实现了前向传播和反向传播,这里记录一下,同时也记录一下我的PyTorch学习过程。

阅读全文 »

基于贝叶斯决策理论的分类方法

朴素贝叶斯是贝叶斯决策理论的一部分,所以在学习朴素贝叶斯之前先了解一下贝叶斯决策理论。
假设我们有一个数据集,由两类数据组成:

阅读全文 »

我们需要一个函数能接受所有的输入然后预测出类别,例如在两个类的情况下,这个函数输出0或1。单位阶跃函数具有这种性质,然而它的问题在于在跳跃点上从0瞬间跳跃到1,这个瞬间跳跃过程有时很难处理。幸好另一个函数也有类似性质,且数学上更易处理,这就是sigmoid函数。

阅读全文 »