精华内容
下载资源
问答
  • 中间层的优缺点
    千次阅读
    2020-08-01 21:31:12

            三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合"的思想。

           注:(内聚:一个模块内各个元素彼此结合的紧密程度;耦合:一个软件结构内不同模块之间互连程度的度量)
      以下也分别对应前端用户界面,后端服务器,后端数据库。

           1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
      2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
      3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。


      优点:

           1、开发人员可以只关注整个结构中的其中某一层;
      2、可以很容易的用新的实现来替换原有层次的实现;
      3、可以降低层与层之间的依赖;
      4、有利于标准化;
      5、利于各层逻辑的复用;
           6、扩展性强。不同层负责不同的层面,如PetShop可经过简单的配置实现Sqlserver和oracle之间的转换,当然写好了也可以        实现B/S与C/S之间的转换;
           7、安全性高。用户端只能通过逻辑层来访问数据层,减少了入口点,把很多危险的系统功能都屏蔽了
           8、项目结构更清楚,分工更明确,有利于后期的维护和迭代。

           缺点:

           1、降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间        层来完成。

           2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个新功能,为保证其设计符合        分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

    更多相关内容
  • 试比较其优缺点。 答:网络向运输提供“面向连接”虚电路服务或“无连接”数据报服务。前者预约了双方通信所需的一切网络资源。优点是能提供服务质量的保证。即所传输的分组不出错、丢失、重复和失序(不按序列...

    姐:网络层向运输层提供“面向连接”虚电路服务或“无连接”数据报服务。前者预约了双方通信所需的一切网络资源。优点是能提供服务质量的保证。即所传输的分组不出错、丢失、重复和失序(不按序列到达终点),也保证分组传输的时限。缺点是路由器复杂,网络成本高;后者无网络资源障碍,尽力而为,优缺点与前者互易。
    在这里插入图片描述

    展开全文
  • 缺点:不能拟合非线性数据;   KNN算法: KNN即最近邻算法,其主要过程为: 1. 计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等); 2. 对上面所有的距离值进行排序...

    https://www.toutiao.com/a6706432431647359491/

     

     

    2019-06-25 19:43:14

    朴素贝叶斯:

    1. 如果给出的特征向量长度可能不同,这是需要归一化为通长度的向量(这里以文本分类为例),比如说是句子单词的话,则长度为整个词汇量的长度,对应位置是该单词出现的次数。

    2. 计算公式如下:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

    的计算方法,而由朴素贝叶斯的前提假设可知,

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

    =

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

    ,因此一般有两种,一种是在类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本的总和;第二种方法是类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本中所有特征出现次数的总和。

    3. 如果

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

    中的某一项为0,则其联合概率的乘积也可能为0,即2中公式的分子为0,为了避免这种现象出现,一般情况下会将这一项初始化为1,当然为了保证概率相等,分母应对应初始化为2(这里因为是2类,所以加2,如果是k类就需要加k,术语上叫做laplace光滑, 分母加k的原因是使之满足全概率公式)。

    朴素贝叶斯的优点:对小规模的数据表现很好,适合多分类任务,适合增量式训练。

    缺点:对输入数据的表达形式很敏感。

     

    决策树:决策树中很重要的一点就是选择一个属性进行分枝,因此要注意一下信息增益的计算公式,并深入理解它。

    信息熵的计算公式如下:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    其中的n代表有n个分类类别(比如假设是2类问题,那么n=2)。分别计算这2类样本在总样本中出现的概率p1和p2,这样就可以计算出未选中属性分枝前的信息熵。

    现在选中一个属性xi用来进行分枝,此时分枝规则是:如果xi=vx的话,将样本分到树的一个分支;如果不相等则进入另一个分支。很显然,分支中的样本很有可能包括2个类别,分别计算这2个分支的熵H1和H2,计算出分枝后的总信息熵H’=p1*H1+p2*H2.,则此时的信息增益ΔH=H-H’。以信息增益为原则,把所有的属性都测试一边,选择一个使增益最大的属性作为本次分枝属性。

    决策树的优点:计算量简单,可解释性强,比较适合处理有缺失属性值的样本,能够处理不相关的特征;

    缺点:容易过拟合(后续出现了随机森林,减小了过拟合现象)。

     

    Logistic回归:Logistic是用来分类的,是一种线性分类器,需要注意的地方有:

    1. logistic函数表达式为:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    其导数形式为:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    2. logsitc回归方法主要是用最大似然估计来学习的,所以单个样本的后验概率为:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    到整个样本的后验概率:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    其中:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    通过对数进一步化简为:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

     

    3. 其实它的loss function为-l(θ),因此我们需使loss function最小,可采用梯度下降法得到。梯度下降法公式为:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    Logistic回归优点:

    1. 实现简单

    2. 分类时计算量非常小,速度很快,存储资源低;

    缺点:

    1. 容易欠拟合,一般准确度不太高

    2. 只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;

     

    线性回归:

    线性回归才是真正用于回归的,而不像logistic回归是用于分类,其基本思想是用梯度下降法对最小二乘法形式的误差函数进行优化,当然也可以用normal equation直接求得参数的解,结果为:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    而在LWLR(局部加权线性回归)中,参数的计算表达式为:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    因为此时优化的是:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    由此可见LWLR与LR不同,LWLR是一个非参数模型,因为每次进行回归计算都要遍历训练样本至少一次。

    线性回归优点:实现简单,计算简单;

    缺点:不能拟合非线性数据;

     

    KNN算法:KNN即最近邻算法,其主要过程为:

    1. 计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等);

    2. 对上面所有的距离值进行排序;

    3. 选前k个最小距离的样本;

    4. 根据这k个样本的标签进行投票,得到最后的分类类别;

    如何选择一个最佳的K值,这取决于数据。一般情况下,在分类时较大的K值能够减小噪声的影响。但会使类别之间的界限变得模糊。一个较好的K值可通过各种启发式技术来获取,比如,交叉验证。另外噪声和非相关性特征向量的存在会使K近邻算法的准确性减小。

    近邻算法具有较强的一致性结果。随着数据趋于无限,算法保证错误率不会超过贝叶斯算法错误率的两倍。对于一些好的K值,K近邻保证错误率不会超过贝叶斯理论误差率。

    注:马氏距离一定要先给出样本集的统计性质,比如均值向量,协方差矩阵等。关于马氏距离的介绍如下:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

     

    KNN算法的优点:

    1. 思想简单,理论成熟,既可以用来做分类也可以用来做回归;

    2. 可用于非线性分类;

    3. 训练时间复杂度为O(n);

    4. 准确度高,对数据没有假设,对outlier不敏感;

    缺点:

    1. 计算量大;

    2. 样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);

    3. 需要大量的内存;

     

    SVM:

    要学会如何使用libsvm以及一些参数的调节经验,另外需要理清楚svm算法的一些思路:

    1. svm中的最优分类面是对所有样本的几何裕量最大(为什么要选择最大间隔分类器,请从数学角度上说明?网易深度学习岗位面试过程中有被问到。答案就是几何间隔与样本的误分次数间存在关系:

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

    ,其中的分母就是样本到分类间隔距离,分子中的R是所有样本中的最长向量值),即:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

     

    经过一系列推导可得为优化下面原始目标:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    2. 下面来看看拉格朗日理论:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    可以将1中的优化目标转换为拉格朗日的形式(通过各种对偶优化,KKD条件),最后目标函数为:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    我们只需要最小化上述目标函数,其中的α为原始优化问题中的不等式约束拉格朗日系数。

    3. 对2中最后的式子分别w和b求导可得:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    由上面第1式子可以知道,如果我们优化出了α,则直接可以求出w了,即模型的参数搞定。而上面第2个式子可以作为后续优化的一个约束条件。

    4. 对2中最后一个目标函数用对偶优化理论可以转换为优化下面的目标函数:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    而这个函数可以用常用的优化方法求得α,进而求得w和b。

    5. 按照道理,svm简单理论应该到此结束。不过还是要补充一点,即在预测时有:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    那个尖括号我们可以用核函数代替,这也是svm经常和核函数扯在一起的原因。

    6. 最后是关于松弛变量的引入,因此原始的目标优化公式为:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    此时对应的对偶优化公式为:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    与前面的相比只是α多了个上界。

    SVM算法优点:

    1. 可用于线性/非线性分类,也可以用于回归;

    2. 低泛化误差;

    3. 容易解释;

    4. 计算复杂度较低;

    缺点:

    1. 对参数和核函数的选择比较敏感;

    2. 原始的SVM只比较擅长处理二分类问题;

     

    Boosting:

    主要以Adaboost为例,首先来看看Adaboost的流程图,如下:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    从图中可以看到,在训练过程中我们需要训练出多个弱分类器(图中为3个),每个弱分类器是由不同权重的样本(图中为5个训练样本)训练得到(其中第一个弱分类器对应输入样本的权值是一样的),而每个弱分类器对最终分类结果的作用也不同,是通过加权平均输出的,权值见上图中三角形里面的数值。那么这些弱分类器和其对应的权值是怎样训练出来的呢?

    下面通过一个例子来简单说明,假设的是5个训练样本,每个训练样本的维度为2,在训练第一个分类器时5个样本的权重各为0.2. 注意这里样本的权值和最终训练的弱分类器组对应的权值α是不同的,样本的权重只在训练过程中用到,而α在训练过程和测试过程都有用到。

    现在假设弱分类器是带一个节点的简单决策树,该决策树会选择2个属性(假设只有2个属性)的一个,然后计算出这个属性中的最佳值用来分类。

    Adaboost的简单版本训练过程如下:

    1. 训练第一个分类器,样本的权值D为相同的均值。通过一个弱分类器,得到这5个样本(请对应书中的例子来看,依旧是machine learning in action)的分类预测标签。与给出的样本真实标签对比,就可能出现误差(即错误)。如果某个样本预测错误,则它对应的错误值为该样本的权重,如果分类正确,则错误值为0. 最后累加5个样本的错误率之和,记为ε。

    2. 通过ε来计算该弱分类器的权重α,公式如下:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    3. 通过α来计算训练下一个弱分类器样本的权重D,如果对应样本分类正确,则减小该样本的权重,公式为:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    如果样本分类错误,则增加该样本的权重,公式为:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    4. 循环步骤1,2,3来继续训练多个分类器,只是其D值不同而已。

    测试过程如下:

    输入一个样本到训练好的每个弱分类中,则每个弱分类都对应一个输出标签,然后该标签乘以对应的α,最后求和得到值的符号即为预测标签值。

    Boosting算法的优点:

    1. 低泛化误差;

    2. 容易实现,分类准确率较高,没有太多参数可以调;

    3. 缺点:

    4. 对outlier比较敏感;

     

    聚类:

    根据聚类思想划分:

    1. 基于划分的聚类:

    K-means, k-medoids(每一个类别中找一个样本点来代表),CLARANS.

    k-means是使下面的表达式值最小:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    k-means算法的优点:

    (1)k-means算法是解决聚类问题的一种经典算法,算法简单、快速。

    (2)对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k<<n。这个算法通常局部收敛。

    (3)算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。

    缺点:

    (1)k-平均方法只有在簇的平均值被定义的情况下才能使用,且对有些分类属性的数据不适合。

    (2)要求用户必须事先给出要生成的簇的数目k。

    (3)对初值敏感,对于不同的初始值,可能会导致不同的聚类结果。

    (4)不适合于发现非凸面形状的簇,或者大小差别很大的簇。

    (5)对于"噪声"和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。

    2. 基于层次的聚类:

    自底向上的凝聚方法,比如AGNES。

    自上向下的分裂方法,比如DIANA。

    3. 基于密度的聚类:DBSACN,OPTICS,BIRCH(CF-Tree),CURE.

    4. 基于网格的方法:STING, WaveCluster.

    5. 基于模型的聚类:EM,SOM,COBWEB.

    推荐系统:推荐系统的实现主要分为两个方面:基于内容的实现和协同滤波的实现。

    基于内容的实现:不同人对不同电影的评分这个例子,可以看做是一个普通的回归问题,因此每部电影都需要提前提取出一个特征向量(即x值),然后针对每个用户建模,即每个用户打的分值作为y值,利用这些已有的分值y和电影特征值x就可以训练回归模型了(最常见的就是线性回归)。

    这样就可以预测那些用户没有评分的电影的分数。(值得注意的是需对每个用户都建立他自己的回归模型)

    从另一个角度来看,也可以是先给定每个用户对某种电影的喜好程度(即权值),然后学出每部电影的特征,最后采用回归来预测那些没有被评分的电影。

     

    当然还可以是同时优化得到每个用户对不同类型电影的热爱程度以及每部电影的特征。

    基于协同滤波的实现:协同滤波(CF)可以看做是一个分类问题,也可以看做是矩阵分解问题。协同滤波主要是基于每个人自己的喜好都类似这一特征,它不依赖于个人的基本信息。

    比如刚刚那个电影评分的例子中,预测那些没有被评分的电影的分数只依赖于已经打分的那些分数,并不需要去学习那些电影的特征。

    SVD将矩阵分解为三个矩阵的乘积,公式如下所示:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    中间的矩阵sigma为对角矩阵,对角元素的值为Data矩阵的奇异值(注意奇异值和特征值是不同的),且已经从大到小排列好了。即使去掉特征值小的那些特征,依然可以很好的重构出原始矩阵。如下图所示:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    其中更深的颜色代表去掉小特征值重构时的三个矩阵。

    果m代表商品的个数,n代表用户的个数,则U矩阵的每一行代表商品的属性,现在通过降维U矩阵(取深色部分)后,每一个商品的属性可以用更低的维度表示(假设为k维)。这样当新来一个用户的商品推荐向量X,则可以根据公式X'*U1*inv(S1)得到一个k维的向量,然后在V’中寻找最相似的那一个用户(相似度测量可用余弦公式等),根据这个用户的评分来推荐(主要是推荐新用户未打分的那些商品)。

     

    pLSA:由LSA发展过来,而早期LSA的实现主要是通过SVD分解。pLSA的模型图如下

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    公式中的意义如下:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

     

    LDA主题模型,概率图如下:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    和pLSA不同的是LDA中假设了很多先验分布,且一般参数的先验分布都假设为Dirichlet分布,其原因是共轭分布时先验概率和后验概率的形式相同。

     

    GDBT:GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),好像在阿里内部用得比较多(所以阿里算法岗位面试时可能会问到),它是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的输出结果累加起来就是最终答案。

    它在被提出之初就和SVM一起被认为是泛化能力(generalization)较强的算法。近些年更因为被用于搜索排序的机器学习模型而引起大家关注。

    GBDT是回归树,不是分类树。其核心就在于,每一棵树是从之前所有树的残差中来学习的。为了防止过拟合,和Adaboosting一样,也加入了boosting这一项。

     

    Regularization作用是

    1. 数值上更容易求解;

    2. 特征数目太大时更稳定;

    3. 控制模型的复杂度,光滑性。复杂性越小且越光滑的目标函数泛化能力越强。而加入规则项能使目标函数复杂度减小,且更光滑。

    4. 减小参数空间;参数空间越小,复杂度越低。

    5. 系数越小,模型越简单,而模型越简单则泛化能力越强(Ng宏观上给出的解释)。

    6. 可以看成是权值的高斯先验。

     

    异常检测:可以估计样本的密度函数,对于新样本直接计算其密度,如果密度值小于某一阈值,则表示该样本异常。而密度函数一般采用多维的高斯分布。

    如果样本有n维,则每一维的特征都可以看作是符合高斯分布的,即使这些特征可视化出来不太符合高斯分布,也可以对该特征进行数学转换让其看起来像高斯分布,比如说x=log(x+c), x=x^(1/c)等。异常检测的算法流程如下:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    其中的ε也是通过交叉验证得到的,也就是说在进行异常检测时,前面的p(x)的学习是用的无监督,后面的参数ε学习是用的有监督。那么为什么不全部使用普通有监督的方法来学习呢(即把它看做是一个普通的二分类问题)?

    主要是因为在异常检测中,异常的样本数量非常少而正常样本数量非常多,因此不足以学习到好的异常行为模型的参数,因为后面新来的异常样本可能完全是与训练样本中的模式不同。

     

    EM算法:有时候因为样本的产生和隐含变量有关(隐含变量是不能观察的),而求模型的参数时一般采用最大似然估计,由于含有了隐含变量,所以对似然函数参数求导是求不出来的,这时可以采用EM算法来求模型的参数的(对应模型参数个数可能有多个),

    EM算法一般分为2步:

    E步:选取一组参数,求出在该参数下隐含变量的条件概率值;

    M步:结合E步求出的隐含变量条件概率,求出似然函数下界函数(本质上是某个期望函数)的最大值。

    重复上面2步直至收敛,公式如下所示:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

     

    M步公式中下界函数的推导过程:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    EM算法一个常见的例子就是GMM模型,每个样本都有可能由k个高斯产生,只不过由每个高斯产生的概率不同而已,因此每个样本都有对应的高斯分布(k个中的某一个),此时的隐含变量就是每个样本对应的某个高斯分布。

    GMM的E步公式如下(计算每个样本对应每个高斯的概率):

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

     

    更具体的计算公式为:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

     

    M步公式如下(计算每个高斯的比重,均值,方差这3个参数):

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

     

    Apriori是关联分析中比较早的一种方法,主要用来挖掘那些频繁项集合。其思想是:

    1. 如果一个项目集合不是频繁集合,那么任何包含它的项目集合也一定不是频繁集合;

    2. 如果一个项目集合是频繁集合,那么它的任何非空子集也是频繁集合;

    Aprioir需要扫描项目表多遍,从一个项目开始扫描,舍去掉那些不是频繁的项目,得到的集合称为L,然后对L中的每个元素进行自组合,生成比上次扫描多一个项目的集合,该集合称为C,接着又扫描去掉那些非频繁的项目,重复…

    看下面这个例子,元素项目表格:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

     

    如果每个步骤不去掉非频繁项目集,则其扫描过程的树形结构如下:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    在其中某个过程中,可能出现非频繁的项目集,将其去掉(用阴影表示)为:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

     

    FP Growth是一种比Apriori更高效的频繁项挖掘方法,它只需要扫描项目表2次。其中第1次扫描获得当个项目的频率,去掉不符合支持度要求的项,并对剩下的项排序。第2遍扫描是建立一颗FP-Tree(frequent-patten tree)。

    接下来的工作就是在FP-Tree上进行挖掘,比如说有下表:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    它所对应的FP_Tree如下:

     

    「收藏」人工智能中常见机器学习算法优缺点有哪些?

     

     

    然后从频率最小的单项P开始,找出P的条件模式基,用构造FP_Tree同样的方法来构造P的条件模式基的FP_Tree,在这棵树上找出包含P的频繁项集。

    依次从m,b,a,c,f的条件模式基上挖掘频繁项集,有些项需要递归的去挖掘,比较麻烦,比如m节点。

    展开全文
  • 激活函数比较优缺点

    千次阅读 2021-12-02 13:03:36
    激活函数优缺点:https://blog.csdn.net/kuweicai/article/details/93926393 1.为什么使用激活函数:再深的网络也是线性模型,只能把输入线性组合再输出。不能学习到复杂的映射关系。因此需要激活函数这个非线性函数...

    激活函数:

    激活函数sigmoid、tanh、ReLU、LeakyReLU、ReLU6
    https://www.cnblogs.com/itmorn/p/11132494.html
    激活函数优缺点:https://blog.csdn.net/kuweicai/article/details/93926393

    1.为什么使用激活函数:再深的网络也是线性模型,只能把输入线性组合再输出。不能学习到复杂的映射关系。因此需要激活函数这个非线性函数做转换。
    2.sigmod
    在这里插入图片描述

    sigmod优点:
    作为最早开始使用的激活函数之一, Sigmoid 函数具有如下优点。
    连续,且平滑便于求导
    但是缺点也同样明显。
    none-zero-centered(非零均值, Sigmoid 函数 的输出值恒大于0),会使训练出现 zig-zagging dynamics 现象,使得收敛速度变慢。
    梯度消失问题。 由于Sigmoid的导数总是小于1,所以当层数多了之后,会使回传的梯度越来越小,导致梯度消失问题。而且在前向传播的过程中,通过观察Sigmoid的函数图像,当 x 的值大于2 或者小于-2时,Sigmoid函数的输出趋于平滑,会使权重和偏置更新幅度非常小,导致学习缓慢甚至停滞。
    计算量大。由于采用了幂计算。
    建议:基于上面Sigmoid的性质,所以不建议在中间层使用Sigmoid激活函数,因为它会让梯度消失

    sigmod(x)的缺点:
    ①输出范围在0~1之间,均值为0.5,需要做数据偏移,不方便下一层的学习。
    ②当x很小或很大时,存在导数很小的情况。另外,神经网络主要的训练方法是BP算法,BP算法的基础是导数的链式法则,也就是多个导数的乘积。而sigmoid的导数最大为0.25,多个小于等于0.25的数值相乘,其运算结果很小。随着神经网络层数的加深,梯度后向传播到浅层网络时,基本无法引起参数的扰动,也就是没有将loss的信息传递到浅层网络,这样网络就无法训练学习了。这就是所谓的梯度消失。

    3.tanh
    tanh是双曲函数中的一个,tanh()为双曲正切。在数学中,双曲正切“tanh”是由双曲正弦和双曲余弦这两种基本双曲函数推导而来。
    tanh激活函数和导函数分别为
    在这里插入图片描述对应的图像分别为:
    在这里插入图片描述
    对应代码为:

    from matplotlib import pyplot as plt
    import numpy as np
    fig = plt.figure()
    x = np.arange(-10, 10, 0.025)
    plt.plot(x,(1-np.exp(-2*x))/(1+np.exp(-2*x)))
    plt.title("y = (1-exp(-2x))/(1+exp(-2x))")
    plt.show()
    plt.plot(x,4*np.exp(-2*x)/(1+np.exp(-2*x))**2)
    plt.title("y = 4exp(-2x)/(1+exp(-2x))^2")
    plt.show()
    

    在神经网络的应用中,tanh通常要优于sigmod的,因为tanh的输出在-1~1之间,均值为0,更方便下一层网络的学习。但有一个例外,如果做二分类,输出层可以使用sigmod,因为他可以算出属于某一类的概率
    Sigmod(x)和tanh(x)都有一个缺点:在深层网络的学习中容易出现梯度消失,造成学习无法进行。
    可以发现它的优点主要是解决了none-zero-centered 的问题,但是缺点依然是梯度消失,计算消耗大。但是如果和上面的 sigmoid 激活函数相比, tanh 的导数的取值范围为(0, 1), 而 sigmoid 的导数的取值范围为(0,1/4),显然sigmoid 会更容易出现梯度消失,所以 tanh 的收敛速度会比 sigmoid 快。

    4.ReLU系列
    4.1 ReLU
    针对sigmod和tanh的缺点,提出了ReLU函数
    线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元,是一种人工神经网络中常用的激活函数(activation function),通常指代以斜坡函数及其变种为代表的非线性函数。
    ReLU激活函数和导函数分别为
    在这里插入图片描述对应的图像分别为:
    在这里插入图片描述
    对应代码为:

    from matplotlib import pyplot as plt
    import numpy as np
    fig = plt.figure()
    x = np.arange(-10, 10, 0.025)
    plt.plot(x,np.clip(x,0,10e30))
    plt.title("y = relu(x)=max(x,0)")
    plt.show()
    from matplotlib import pyplot as plt
    plt.plot(x,x>0,"o")
    plt.title("y = relu'(x)")
    plt.show()
    

    Relu的一个缺点是当x为负时导数等于零,但是在实践中没有问题,也可以使用leaky Relu。
    总的来说Relu是神经网络中非常常用的激活函数。
    其优点如下
    x 大于0时,其导数恒为1,这样就不会存在梯度消失的问题
    计算导数非常快,只需要判断 x 是大于0,还是小于0
    收敛速度远远快于前面的 Sigmoid 和 Tanh函数
    缺点
    none-zero-centered
    Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。因为当x 小于等于0时输出恒为0,如果某个神经元的输出总是满足小于等于0 的话,那么它将无法进入计算。有两个主要原因可能导致这种情况产生:
    (1) 非常不幸的参数初始化,这种情况比较少见
    (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用 MSRA 初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。
    这个激活函数应该是在实际应用中最广泛的一个。

    4.2.LeakyReLU
    在这里插入图片描述
    优点:Leaky ReLU 的提出主要是为了解决前面 Relu 提到的 Dead ReLUProblem 的问题,因为当 x 小于 0 时,其输出不再是 0.
    而同时 Leaky ReLU 具有 ReLU 的所有优点。听上去貌似很好用,只是在实际操作中并没有完全证明好于 ReLU 函数。

    4.3 ReLU6
    在这里插入图片描述ReLU6 仅仅是在 ReLU 的基础上进行了 clip 操作,即限制了最大输出,比较典型的是在 mobile net v2 中有使用。
    比较有意思的是,为什么是6,不是7或者其他呢?结合原文的说明,可能是作者尝试了多种,ReLU6 效果最好。

    展开全文
  • 详细讲解MYSQL视图的作用及优缺点

    千次阅读 2021-04-25 00:25:35
    此时我们完全不用关心视图是怎么处理数据的,我们只需要知道如何使用这个结果集即可,视图相当于一个中间层。 2.第二个显著优点就是它更加安全。比如我们可以让用户有权去访问某个视图,但是不能访问原表,这样就...
  • 桥梁钢结构特点及优缺点

    千次阅读 2020-12-23 09:02:26
    钢结构桥梁的结构特点及优缺点1)钢结构桥梁是桥的一种形式,是指一座桥的上部结构主要承重受力部分是由钢材制成的。钢结构桥梁同桥一样,都是跨越河流、湖泊、海洋障碍物的空中的路,其中大跨度桥梁多为预应力钢凝...
  • 如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。 2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其...
  • SSH框架各自优缺点总结

    千次阅读 2019-04-04 16:06:50
    Struts的优缺点 Struts优点: (1)实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现。 (2)具有丰富的Tag标签库,如能灵活运用,能大大提高开发效率。 (3)页面导航使系统的脉络更加清晰。通过一个配置文件,...
  • 两种实现方式: 第一种:应用程序实现:指的是在应用程序...访问压力在一定级别以下,性能很好缺点: 架构一旦调整,代码要跟着变 难以实现高级应用,如自动分库,分表 无法适用大型应用场景 第二种:中间件实...
  • 架构及其优缺点

    千次阅读 2019-06-06 16:39:00
    三层架构: 1,数据访问层 dao:对数据的操作 ...缺点:降低了系统的性能,原先可以直接访问数据库,如今需要通过中间层完成。在一定程度上增加了开发成本,有时候会导致级联的修改 service.jav...
  • MVC,MVP和MVVM之间的优缺点

    千次阅读 2021-04-17 23:47:13
    什么是MVC2.MVC的特点3.MVC的流程3.MVC的优点3.MVC的缺点二、MVP1.什么是MVP1.MVP的特点2.MVP的流程3.MVP的优点4.MVP的缺点二、MVVM1.什么是MVVM2.MVVM的优点3.MVVM的缺点总结 前言 2021-4-17学习 提示:以下是本...
  • Mybatis(1)-mybatis 优缺点和适用场合

    千次阅读 2019-02-21 11:27:51
    mybatis 优缺点和适用场合 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久框架, MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML...
  • mysql触发器之优缺点简介

    千次阅读 2018-07-12 17:24:49
    既然触发器都是一种特殊的存储过程了,那么我们在它们中间该如何取舍呢?在下只是建议下,如果我们无法使用存储过程完成工作时,可以考虑使用下SQL触发器。 好啦,本次记录就到这里了。 如果感觉不错的话,请多多...
  • 所有神经网络的特点及优缺点分析总结

    万次阅读 多人点赞 2020-11-03 17:58:48
    对于中间层,任意两个神经元间的连接权值为wij = wji ,神经元的连接是对称的。如果wij等于0,即神经元自身无连接,则成为无自反馈的Hopfield网络,如果wij != 0,则成为有自反馈的Hopfield网络。但是出于稳定性考虑,...
  • 系统架构优缺点分析

    千次阅读 2020-04-19 21:41:23
    这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人员拓展知识面。 一、单体架构 单体架构比较初级,典型的三级架构,前端(Web/手机端)+中间业务逻辑+数据库。这是一种典型的Java ...
  • 架构的优缺点

    万次阅读 2017-06-30 18:12:17
    架构三架构一般包含:控制,业务逻辑,数据访问。从历史角度考虑 单一应用结构 优势 结构简单 性能高 劣势 业务杂糅。代码杂糅的不同的业务,要求开发人员能理解所有的细节,维护费时间。 面临什么...
  • Shiro 主要分为两个部分就是认证和授权,在个人感觉来看就是查询数据库做相应的判断而已,Shiro只是一个框架而已,其中的内容需要自己的去构建,前后是自己的,中间是Shiro帮我们去搭建和配置好的。 2.2 Spring ...
  • 接口特性及优缺点

    千次阅读 2019-03-12 23:52:49
    package com.ys_01; /* * 接口的成员特点 */ public class InterfaceDemo01 { public static void main(String[] args) { } } interface Animal{ int j; //只能有常量,不能有变量 ... public ...
  • spring的优缺点

    千次阅读 2018-11-10 14:57:32
    1. 提供了一种管理对象的方法,可以把中间层对象有效地组织起来。一个完美的框架“黏合剂”。 2. 采用了分层结构,可以增量引入到项目中。 3. 有利于面向接口编程习惯的养成。 4. 目的之一是为了写出易于测试...
  • 1 什么是三 2 为什么使用三 3 与两的区别 1 什么是三 UI(表现): 主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。 BLL:(业务逻辑): UI和DAL之间的桥梁。...
  • 在做vue项目中,组件之间的通信是必不可少的,但是vue有多少种方式、用法、优缺点及适用场景,本篇文章大概总结一下。(本篇摘抄[Vue组件通信方式及其应用场景总结](https://juejin.cn/post/6903796293445877773)并...
  • 事件委托 什么是事件委托 简单来说,事件就是onclick,onmousemove等等,委托就是把自己的事...2.层级过多,冒泡过程中可能被中间层阻止 3.如果把所有事件都用事件委托,可能会出现事件误判,即不该触发事件的被绑定了 ...
  • 参考文章:Redis集群的5种使用方式,各自优缺点分析 一、常见使用方式 Redis 的几种常见使用方式包括: Redis 单副本 Redis 多副本(主从) Redis Sentinel(哨兵) Redis Cluster Redis 自研 二、各种使用...
  • websocket优缺点、应用场景以及与HTTP协议的异同

    千次阅读 多人点赞 2021-04-01 21:45:27
    websocket 协议概述 WebSocket与HTTP协议的异同 Websocket优点 Websocket缺点 Websocket的作用 Websocket应用场景
  • 常见机器学习算法优缺点总结

    千次阅读 2019-08-04 17:49:46
    常见机器学习算法优缺点总结 1. 回归 回归是一种用于连续型数值变量预测和建模的监督学习算法,使用案例包括房地产价格、股价走势或学生成绩等的预测。 回归任务的特征是具有数值型目标变量的标注数据集。换言之...
  • B树和B+树介绍 及优缺点

    千次阅读 2021-03-23 15:29:15
    B树也称B-树,它是一颗多路平衡查找树。二叉树我想大家都不陌生,其实,B树和后面讲到的B+树也是从最简单的二叉树变换而来的,并没有什么神秘的地方 B树的定义 一棵m阶B树(balanced ...所有叶子节点都位于同一,或者
  • 软件开发的四个模型优缺点

    千次阅读 2020-06-20 11:18:53
    瀑布模型有以下缺点: 1)在项目各个阶段之间极少有反馈。 2)只有在项目生命周期的后期才能看到结果。 3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。 二、快速原型模型 快速原型模型需要迅速建造一个可以...
  • 三大工厂模式的优缺点

    万次阅读 2019-03-08 08:43:08
    简单工厂模式,工厂方法模式和抽象工厂模式都是属于创建型设计模式,这三种创建型模式都不需要知道具体类。...下面根据这三者之间的特点,优点,缺点,适用范围进行比较。 一.特点 简单工厂模式:专门定义一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,596
精华内容 19,838
关键字:

中间层的优缺点