• 机器学习


    机器学习说白了就是个划分边界的问题,如何把一类物品和其他类更好的分开就是目标。有了目标就需要一个判断标准,这个判断标准就是损失函数,等于给模型打分,损失函数值越低,分越高。所以目标就是找到一个完美的划分平面,使得分数最高。那么至于怎么找这个划分面呢?

    1. 多个自变量的线性组合在高维空间里是一个超平面,理论上可以划分一切边界,这里也就是sum(w_i*x_i+b)的由来,其中b就是偏置项,这里如果没有b,函数就恒过原点了。经过不同w和x出来的y喂到下一层作为自变量x,不断往复,最后出来10个最终的z,把这些z经过softmax函数后出来一个0-1的概率,取概率最大的那一个作为模型的预测值。
    2. 拿我们的预测值和真实的值比较,等于说对答案,看看我们能得多少分,这个评分标准就是刚才的损失函数。看到分数之后开始想办法让这个分高(也就是损失分更低),这时候就用到梯度下降,因为梯度方向是下降最快的,于是开始求偏导,这一部的目标是,通过预测的结果一步步往回求导,找梯度,也就是反向传播。我们的目标是通过反向传播更新最开始输入端的权重w。
    3. 不断重复1,2,直到我们的预测结果和真实结果之间的损失分不能再降低了(人为给定个阈值),那么我们就训练完了。拿着这个结果去跑测试集,等于之前是在做练习题,现在去高考了,高考完就结束了,所以没有反向传播的学习过程了,最终考下来的结果也就是准确率,越高越好。

    这个就是大概神经网络的原理,至于其中就会涉及到很多数学问题,比如怎么避免在梯度下降时找到的是极小值而不是最小值?如何提高效率和准确度?如何在高维特征中保持可解释性等等,这就要求有很强的数学功底和逻辑思维能力了。

  • 相关阅读:
    spring源码解析四( spring事务)
    Epoll的本质(内部实现原理)转载
    Gitlab+Jenkins+Docker+K8S实现CI/CD
    AIOps
    云运维的关键有哪些?
    Nginx代理Portainer
    nginx+tomcat+mysql进行负载均衡
    Docker安装及容器创建
    运维常用的linux命令操作
    Arm64安装docker和docker-compose
  • 原文地址:https://www.cnblogs.com/auschwitzer/p/15719227.html
Copyright © 2020-2023  润新知