V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wszgrcy
V2EX  ›  机器学习

说下我对神经网络的认知不知道说的对不对求大佬来评价

  •  
  •   wszgrcy · 2021-10-12 23:11:59 +08:00 · 1704 次点击
    这是一个创建于 1136 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 间断的看了两年多的机器学习 /深度学习 /人工智能相关的东西,最后潜意识里觉得我要找的是神经网络,并且最近通过大脑的几百亿神经元看不同的教程,感觉理论上好像了解了,说下看法,如果不对的希望大佬能指正,如果有什么交流的地方就更好了.....
    • 神经网络就是输入->权重×输入然后+++->结果 这样
    • 如果想要纠正权重就需要计算误差,然后梯度下降慢慢增减权重.反向传播(这个应该是最简单的?或者是最入门的?)计算梯度(比如误差),基本上就是用到偏导数,复合函数求导,推理过程比较繁琐,但是最后得出来的公式应该是通用的?
    • 目前暂时还没有找框架实现,但是推测框架的封装应该就是把这个梯度的计算公式直接内置了,然后我们就不需要再向上面那样一步一步推导了?
    • 每层的输出都是权重乘输入,是不是相当于假设关系是线性的,然后通过多层和激活函数模拟一个近似的公式?

    那么大胆的猜测是不是也有假设不是线性的....比如 xw 这种或者 logwx?

    • 偏置再教程里没看到详细解析,大概的意思是防止再原点上不好算?
    • 有手写反向传播计算梯度的例子吗?因为看的只是推导,感觉还少一个像高数上那种一个定理后面跟个例子让我学习的.........还是一般情况下大家都是只了解下推理过程,最后计算机计算都是调方法?
    • matlab,tensorflow,pytorh 等软件 /框架 /包是不是同一种神经网络(就是前面说的那种最简单的先正向计算结果,再反向计算梯度),实现原理是一样的?只不过其他的功能封装的有所不同?
    • 前馈神经网络是我前面说的输出=权重乘输入,没有计算梯度进行修改权重的方式,为啥还叫神经网络?个人理解应该要有纠正的环节,难道是权重手动瞎蒙吗?
    • 如果理论没啥大问题,要开始实战,有没有大佬有什么推荐看的东西?
    9 条回复    2021-10-13 00:01:33 +08:00
    flyaway
        1
    flyaway  
       2021-10-12 23:22:06 +08:00   ❤️ 1
    - 反向传播算法确实是基础,但是除非是做优化的或者做教学的,一般从业者其实很少手工推导。因为大部分的神经网络框架都已经处理好这部分内容了。实现机制比较复杂,我只知道会在内存中维持一个 compution graph 用来追踪所有的网络连接和神经元。
    - 层与层之间的连接可以是非线性的,实际上大部分的激活函数都是非线性的。
    - matlab 是一种编程语言,tensorflow, pytorch 是 python 下的神经网络框架。tensorflow 和 pytorch 数学抽象都是一样的,只是具体的实现方式不一样。就像 java 和 C++的关系,都是基于上下文无关文法的语言,只是各自有各自的特点。
    dji38838c
        2
    dji38838c  
       2021-10-12 23:31:27 +08:00 via Android   ❤️ 1
    你这里面自己脑补的东西太多了
    建议好好跟一个课程学学。
    wszgrcy
        3
    wszgrcy  
    OP
       2021-10-12 23:32:39 +08:00
    @flyaway
    也就是现在的算法什么的,一般都看看原理,就算是真正从事人工智能的大佬,不排在前几位基本上都属于调用?(研究出一个新的算法应该很费精力吧)
    激活函数是非线性的这个我知道,但是为啥没有那种 w^x x^w logxw 这种输出的计算?还是说有但是比较高级?
    matlab 看起来更友好一些,但是是收费的,下一个快 20g......是不是换成其他的好一些.难道是 gui 收费,但是可以单独编译?
    最后感谢大佬,
    askfermi
        4
    askfermi  
       2021-10-12 23:33:40 +08:00   ❤️ 1
    > 有手写反向传播计算梯度的例子吗?因为看的只是推导,感觉还少一个像高数上那种一个定理后面跟个例子让我学习的.........还是一般情况下大家都是只了解下推理过程,最后计算机计算都是调方法?

    其实就是 chain rule 反复用来用去。但我还真的曾经做了一个例子: https://tinynet.autoai.org/en/latest/induction/linear.html

    这个例子只是 linear (或叫全连接?)层的,但是其他的基本上也通用。

    > matlab,tensorflow,pytorh 等软件 /框架 /包是不是同一种神经网络(就是前面说的那种最简单的先正向计算结果,再反向计算梯度),实现原理是一样的?只不过其他的功能封装的有所不同?

    据我所知,数学原理应该是一样的,但是优化的方法不同,例如 TF 1 会用静态图?我也不是很了解。

    > 前馈神经网络是我前面说的输出=权重乘输入,没有计算梯度进行修改权重的方式,为啥还叫神经网络?个人理解应该要有纠正的环节,难道是权重手动瞎蒙吗?

    感觉你的理解有误,前馈神经网络只是你的网络里没有环,但依然要反向传播算梯度。

    > 如果理论没啥大问题,要开始实战,有没有大佬有什么推荐看的东西?

    你可以自己实现一个神经网络框架。只有全连接的话很快。欢迎参考: https://github.com/autoai-org/Tinyml
    wszgrcy
        5
    wszgrcy  
    OP
       2021-10-12 23:34:31 +08:00
    @dji38838c 几百亿的神经元当然是用来脑补的(误),不过你说的对,确实是应该找课程看看,两年前下了一堆,但是没找到目标,部分基础也不牢有些也没看明白,这回应该回去看下
    wszgrcy
        6
    wszgrcy  
    OP
       2021-10-12 23:36:35 +08:00
    @askfermi 感谢,可能有些概念我还是没完全理解.还需要再看下
    flyaway
        7
    flyaway  
       2021-10-12 23:40:31 +08:00
    - 并不是什么排在前几位的才研究优化,只是大家的研究领域不同而已。有的人研究模型结构,比如现在流行的 Transformer,也有人研究优化算法,比如 Adam 和 Adafactor 。分工和兴趣不同而已。
    - 我没见过那么复杂的计算,我猜测是因为简单的加和计算可以转化为矩阵乘积,更加适合用 GPU 来加速。
    - 个人不推荐 Matlab,Matlab 更加偏数学和工程。如果你确实想做一些东西,我建议还是从 python 开始,python 圈里的资源更加丰富。
    IgniteWhite
        8
    IgniteWhite  
       2021-10-12 23:45:28 +08:00
    理论的基础实际上是你认知的基础。你看看自己能不能回答以下几个问题:

    线性回归里,变量 x 和参数 w 组成的模型算出的值和实际数据是否一样?
    似然函数的自变量是什么?
    贝叶斯理论中,prior,posterior,以及似然值和前两个问题里的各种量如何对应?
    IgniteWhite
        9
    IgniteWhite  
       2021-10-13 00:01:33 +08:00   ❤️ 1
    @IgniteWhite 问这几个问题的点在于,计算机在机器学习的问题上,要算的是一个概率论的东西。用概率论来描述问题时,一种简化思路是用节点来代表随机变量,用连接来代表非条件独立性的关系。这种结构刚好看起来像神经元的组成方式,仅此而已。

    也就是说你在搞的是概率论的应用,使用到了线性代数和微积分的工具。电脑最终计算的是条件分布。所谓神经网络不能离开概率论去理解。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2735 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:35 · PVG 22:35 · LAX 06:35 · JFK 09:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.