结合sklearn的例子理解神经网络的基本概念

本文以sklearn的MLPClassifier为例,解释神经网络的基本概念,包括多层感知器、fit方法、求解器选择如L-BFGS和SGD,以及正则化参数alpha。讨论了隐藏层结构(隐藏层数量k,每层神经元数量h)对计算复杂度的影响,并概述了神经网络的计算流程,包括输入层、非线性激活函数和输出层的工作原理。


先看代码(sklearn的示例代码):

from sklearn.neural_network import MLPClassifier
    X = [[0., 0.], [1., 1.]]
    y = [0, 1]

    clf = MLPClassifier(solver='lbfgs', alpha=1e-5,
                    hidden_layer_sizes=(5, 2), random_state=1)

    clf.fit(X, y)
    print 'predict\t',clf.predict([[2., 2.], [-1., -2.]])
    print 'predict\t',clf.predict_proba([[2., 2.], [1., 2.]])
    print 'clf.coefs_ contains the weight matrices that constitute the model parameters:\t',[coef.shape for coef in clf.coefs_]
    print clf
    c=0
    for i in clf.coefs_:
        c+=1
        print c,len(i),i
说明:

   MLPclassifier,MLP 多层感知器的的缩写(Multi-layer Perceptron

   fit(X,y) 与正常特征的输入输出相同


solver='lbfgs',  MLP的求解方法:L-BFGS 在小数据上表现较好,Adam 较为鲁棒,SGD在参数调整较优时会有最佳表现(分类效果与迭代次数);
         SGD标识随机梯度下降。疑问:SGD与反向传播算法的关系
alpha:L2的参数:MLP是可以支持正则化的,默认为L2,具体参数需要调整
hidden_layer_sizes=(5, 2) hidden层2层,第一层5个神经元,第二层2个神经元)
      
计算的时间复杂度(非常高。。。。):
Suppose there are n training samples, m features, k hidden layers, each containing h neurons - for simplicity, and o output neurons. The time complexity of backpropagation is O(n\cdot m \cdot h^k \cdot o \cdot i), where i is the number of iterations. Since backpropagation has a high time complexity, it is advisable to start with smaller number of hidden neurons and few hidden layers for training.
 涉及到的设置:隐藏层数量k,每层神经元数量h,迭代次数i。


整体计算流程:
输入:the input layer, consists of a set of neurons \{x_i | x_1, x_2, ..., x_m\} representing the input features 
各个层间的计算: Each neuron in the hidden layer transforms the values from the previous layer with a weighted linear summation w_1x_1 + w_2x_2 + ... + w_mx_m, followed by a non-linear activation function g(\cdot):R \rightarrow R - like the hyperbolic tan function.   (疑问: 如果a non-linear activation function 是logit function 那么每个节点就是逻辑回归?,那么整个神经网络是变为多层的逻辑回归了么?)
输出:The output layer receives the values from the last hidden layer and transforms them into output values

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值