【可微编程(Differentiable Programming)】

可微编程(Differentiable Programming)-Yann LeCun

1. 什么是可微编程?

传统的编程是程序员写出的一行行代码,然后机器按照代码运行指令,输入根据这个代码得到输出。可微编程相当于是用神经网络代替程序员的工作,自己生成编程语言,或者程序员只提供少量的high-level的代码。因此可微编程可以简单理解成是把神经网络看作一门语言,而不是一个机器学习方法,从而描述我们客观世界的概念以及概念之间的关系。

完全不写代码的paper:
Neural Turing Machines
Neural Symbolic Machines/Neural Programmer
DeepCoder: Learning to Write Programs
程序员给出少量代码,用神经网络拟合得到中间缺失的函数的paper:
Programming with a Differentiable Forth Interpreter
Differentiable Programs with Neural Libraries相关工作–如何利用人工写的程序来提高神经网络『写代码』的能力:Coupling Distributed and Symbolic Execution for Natural Language Queries

参考链接:LeCun 说的可微分编程是什么?

2. 可微编程、深度学习,机器学习,数据集之间的关系

在这里插入图片描述
我们将数据集经过预处理之后输入到深度学习框架中提取特征,最后结合机器学习的算法解决实际的过程。深度学习也可以通过对抗生成式网络(GAN)生成数据。那么机器学习能否反推到深度学习呢?–可微分编程。
在这里插入图片描述
可微分编程可以将先用的机器学习方法转化成等价的神经网络。

传统的机器学习的方法:基于假设或先验知识→目标函数→优化求解。当得到一个新的目标函数时,还需要研究目标函数数学上的性质对其进行优化,如凸优划等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Differentiable SVD(Singular Value Decomposition)是一种在机器学习深度学习中常用的技术,用于对矩阵进行分解和降维。TensorFlow是一个开源的机器学习框架,提供用于构建和训练神经网络的工具和函数。在TensorFlow中,可以使用Differentiable SVD来进行矩阵的SVD分解,并通过梯度下降算法来优化分解得到的矩阵。 使用TensorFlow实现Differentiable SVD的步骤如下: 1. 导入TensorFlow库,并创建一个需要进行SVD分解的矩阵。 2. 使用TensorFlow提供的函数,例如tf.linalg.svd,对矩阵进行SVD分解。该函数会返回分解得到的三个矩阵:左奇异矩阵、奇异值矩阵和右奇异矩阵。 3. 根据需要,可以对奇异值矩阵进行降维处理,例如保留前k个最大的奇异值,并将其余的奇异值置为0。 4. 对降维后的矩阵重新进行重构,通过乘积得到近似的原始矩阵。 5. 定义一个损失函数,用于衡量重构矩阵与原始矩阵之间的差异。 6. 使用梯度下降算法,通过最小化损失函数来优化分解得到的矩阵。 7. 迭代多次,直到得到满意的分解结果。 Differentiable SVD的优势在于能够将矩阵分解与模型训练过程相结合,实现端到端的优化,而不需要手动地进行SVD分解和重构。这样可以提高模型的可解释性和泛化能力,同时省去了手动调整降维参数的繁琐过程。TensorFlow作为一个强大的深度学习框架,为实现Differentiable SVD提供了丰富的函数和工具,使得这一技术更加容易应用于实际问题中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值