进入新的内容,深度学习啦
万事万物的产生不是一下子就变出来的,学术上也是,一点点的进步才催生出一门新的学科或者技术,神经网络用于机器学习也不例外,
前面的机器学习的内容,线性回归,逻辑回归,多分类,决策树,以及各种集成学习,再到概率图等等,其实隐约有了深度学习的影子,
只不过是只有一层输入一层输出的浅层神经网络,下面正式进入神经网络!
1. 神经网络算法是有监督的学习算法,
一个神经元 有很多树突dentrities(接收信号输入) 细胞体body经过分析综合汇总(激活函数) 通过轴突axon传递很长的距离,作为下一个神经元的输入 输出信号。
生物神经网络与人工神经元
- 激活函数:将神经元的净输入信号转换成单一的输出信号,以便进一步在网络中传播。(隐藏层如果没有进行非线性变换,那无非就是信号的放大与缩小,只是做“透传”,不进行汇总 分析 综合,神经元的意义何在) 隐藏层激活函数必须是非线性的
- 网络拓扑:描述了模型中神经元的数量以及层数和它们连接的方式。
- 训练算法:指定如何设置连接权重,以便抑制或增加神经元在输入信号中的比重。
常见的激活函数: (本质上是为了进行非线性的变换 如果都是线性变换 那一层就能搞定 要其他的层干嘛, 这也就是与之前的线性回归的本质区别)
-
sigmoid
输出正例的概率 隐射到 0-1之间 -
tanh
hyperbolic tangent
隐射到 -1–1 之间 -
relu
只有信号强到一定的程度才会输出
2. 分类
例如三分类 用ovr的方式训练三个二分类 逻辑回归
使用softmax变换
3. 训练
一次迭代:
前向传播计算一次输出loss
根据loss 以及梯度 更新w
这样来回一次 完成一次迭代
4. 代码
from sklearn.neural_network import MLPRegressor
from sklearn.neural_network import MLPClassifier
X = [[0, 0],
[1, 2]]
y = [0,
1]
clf = MLPClassifier(solver="sgd", alpha=0.00001, activation="relu", hidden_layer_sizes=(5, 2), max_iter=2000,
tol=0.00001)
clf.fit(X, y)
predict_value = clf.predict([[2, 2], [-1, -2]])
print(predict_value)
predict_prob = clf.predict_proba([[2, 2], [-1, -2]])
print(predict_prob)
print([coef.shape for coef in clf.coefs_])
print([coef for coef in clf.coefs_])
文章来源于互联网:
深度学习-神经网络原理-39
声明:小猿资源站是一个资源分享和技术交流平台,本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。