吴恩达机器学习
目录
多分类逻辑回归模型(Softmax)
概念
① 定义模型、激活函数
二元分类逻辑回归
公式:
a1=a2=g(z)=1+e−z11−a1=P(y=1∣x)=P(y=0∣x)
多分类逻辑回归(Softmax)
(Softmax 翻译 分类器,不一定正确)
通用公式:
zj=aj=wj⋅x+bj, j=1,⋯,N∑k=1Nezkezj=P(y=j∣x)
举例 - 设有四种分类:
先定义四个逻辑回归公式:z1=w1⋅x+b1z2=w2⋅x+b2z3=w3⋅x+b3z4=w4⋅x+b4 然后可求得四种概率分别:a1=ez1+ez2+ez3+ez4ez1=P(y=1∣x)a2=ez1+ez2+ez3+ez4ez2=P(y=2∣x)a3=ez1+ez2+ez3+ez4ez3=P(y=3∣x)a4=ez1+ez2+ez3+ez4ez4=P(y=4∣x)相加为1
② Loss函数
二元分类逻辑回归
y=0/1
Loss函数:
Loss=−yloga1−(1−y)log(1−a1)
多分类逻辑回归(Softmax)
由于y>0
Loss函数:
Loss(a1,⋯,aN,y)= ⎩⎨⎧−loga1−loga2 ⋮−logaNif y=1if y=2 ⋮if y=N
③ 神经网络的Softmax输出
区分:多类分类 & 多标签分类
先区分以下两个概念,不要混淆
- 多类分类(Multiiclass Classification)(Softmax输出?)
- 像是之前的例子,例如手写体的数字识别(选择0~9),输出y
- 输出:y=[P1,P2,⋯,Pn],∑P=1
- 多标签分类(Multi-label Classification)
- 我们需要同时检测多个物品的多个类别,例如在一个图像中判断哪些是人哪些是小车哪些是巴士
繁琐的做法是建立三个神经网络,分别是找小车、巴士、人。但一般来说,更好的做法是只训练一个模型,就能去分辨这三种东西 - 输出:y=[P1,P2,⋯,Pn],∀P⊂[0,1]
Softmax输出层
之前的神经网络的输出层都是只有一个单元,而多分类神经网络的输出层是Softmax输出,Softmax层也称Softmax激活函数,最后的输出是一个向量。
除了这个区别以外,其他的和之前的神经网络训练基本相同
一般写法
"""
注意:代码仅供演示,不要抄,后面会学更好的处理方式
"""
import tensorflow as tf
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
# 1. 定义模型、定义层与激活函数
model = Sequential([ # 比如我们的两个隐藏层使用ReLU,最后的输出层使用Softmax
Dense(units=25, activation='relu'),
Dense(units=25, activation='relu'),
Dense(units=10, activation='softmax'),
])
# 2. 定义Loss和Cost
from tensorflow.keras.losses import SparseCategoricalCrossentropy
model.compile(loss = SparseCategoricalCrossentropy())
# 3. 最优化、模型训练
model.fit(X,Y,epochs=100)