加入收藏 | 设为首页 | 会员中心 | 我要投稿 阿坝站长网 (https://www.0837zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

抗量子安全和隐私的高效区块链协议

发布时间:2021-02-11 11:16:31 所属栏目:外闻 来源:互联网
导读:有一个函数f(x),它的计算成本很高,甚至不一定是解析表达式,而且导数未知。你的任务是,找出全局最小值。当然,这个任务挺难的,比机器学习中的其他优化问题要难得多。例如,梯度下降可以获得函数的导数,并利用数学捷径来更快地计算表达式。 另外,在某些

有一个函数f(x),它的计算成本很高,甚至不一定是解析表达式,而且导数未知。你的任务是,找出全局最小值。当然,这个任务挺难的,比机器学习中的其他优化问题要难得多。例如,梯度下降可以获得函数的导数,并利用数学捷径来更快地计算表达式。

另外,在某些优化场景中,函数的计算成本很低。如果可以在几秒钟内得到数百个输入值x的变量结果,简单的网格搜索效果会更好。另外,还可以使用大量非传统的非梯度优化方法,如粒子群算法或模拟退火算法(simulated annealing)。

但是,当前的任务没有还没这么高级。优化层面有限,主要包括:

  • 计算成本高。理想情况下,我们能够对函数进行足够的查询,从而从本质上复制它,但是采用的优化方法必须在有限的输入采样中才能起作用。
  • 导数未知。梯度下降及其风格仍然是最流行的深度学习方法,甚至有时在其他机器学习算法中也备受欢迎的原因所在。导数给了优化器方向感,不过我们没有导数。
  • 需要找出全局最小值,即使对于梯度下降这样精细的方法,这也是一项困难的任务。模型需要某种机制来避免陷入局部最小值。

我们的解决方案是贝叶斯优化,它提供了一个简洁的框架来处理类似于场景描述的问题,以最精简的步骤数找到全局最小值。

构造一个函数c(x)的假设例子,或者给定输入值x的模型的成本。当然,这个函数看起来是什么样子对优化器是隐藏的——这就是c(x)的真实形状,行话中被称为“目标函数”。
 

elector 是一个纯函数:对于给定的一组输入,它们应始终产生相同的结果(至少在应用程序的生命周期内)。这一点很重要,因为选择器可能会执行一次或多次,可能会重新启动并可能会被缓存。

异步状态

Recoil 提供了通过数据流图将状态和派生状态映射到 React 组件的方法。真正强大的功能是图中的函数也可以是异步的。这使得我们可以在异步 React 组件渲染函数中轻松使用异步函数。使用 Recoil ,你可以在选择器的数据流图中无缝地混合同步和异步功能。只需从选择器 get 回调中返回 Promise ,而不是返回值本身。

例如下面的例子,如果用户名存储在我们需要查询的某个数据库中,那么我们要做的就是返回一个 Promise 或使用一个 async 函数。如果 userID 发生更改,就会自动重新执行新查询。结果会被缓存,所以查询将仅对每个唯一输入执行一次(所以一定要保证 selector 纯函数的特性,否则缓存的结果将会和最新的值不一致)。
 

种方式意味着你不需要像 Redux 那样集中定义状态,可以像 Mobx 一样将数据分散定义在任何地方。

要创建一个 Atom ,必须要提供一个 key ,其必须在 RecoilRoot 作用域中是唯一的,并且要提供一个默认值,默认值可以是一个静态值、函数甚至可以是一个异步函数。

订阅和更新状态

Recoil 采用 Hooks 方式订阅和更新状态,常用的是下面三个 API:

  •  useRecoilState:类似 useState 的一个 Hook,可以取到 atom 的值以及 setter 函
  •  useSetRecoilState:只获取 setter 函数,如果只使用了这个函数,状态变化不会导致组件重新渲染
  •  useRecoilValue:只获取状态 

为 React 本身提供的 state 状态在跨组件状态共享上非常苦难,所以我们在开发时一般借助一些其他的库如 Redux、Mobx 来帮助我们管理状态。这些库目前正被广泛使用,我们也并没有遇到什么大问题,那么 Facebook 为什么还要推出一款新的状态管理框架呢?

使用 Redux、Mobx 当然可以,并没有什么问题,主要原因是它们本身并不是 React 库,我们是借助这些库的能力来实现状态管理。像 Redux 它本身虽然提供了强大的状态管理能力,但是使用的成本非常高,你还需要编写大量冗长的代码,另外像异步处理或缓存计算也不是这些库本身的能力,甚至需要借助其他的外部库。

并且,它们并不能访问 React 内部的调度程序,而 Recoil 在后台使用 React 本身的状态,在未来还能提供并发模式这样的能力。

基础使用

初始化

使用 recoil 状态的组件需要使用 RecoilRoot 包裹起来:


(编辑:阿坝站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读