Python - DeepLearningの基本。
複雑なDeepLearningの仕組みをもっとも簡単な形で表現できます。
単純な分岐で実装
ANDゲート
"and"なので2つの値が同じ時が真となります。この場合x1,x2ともに1の場合は真となり"1"となり、違う場合は"0"となります。
def AND_gate(x1, x2):
if x1 == 1 and x2 == 1:
return 1
else:
return 0
試すと
print(AND_gate(0, 0)) # 0
print(AND_gate(0, 1)) # 0
print(AND_gate(1, 0)) # 0
print(AND_gate(1, 1)) # 1
引数が両方"1"の場合の場合に"1"となります。
同じ操作を重みw1,w2、閾値thetaをつけて分岐させてやる方法。
def AND(x1, x2):
w1, w2, theta = 1.1, 2.1, 2.2
y = x1*w1 + x2*w2
if y <= theta:
return 0
elif y > theta:
return 1
試します。
print(AND(0, 0)) # 0
print(AND(0, 1)) # 0
print(AND(1, 0)) # 0
print(AND(1, 1)) # 1
うまくいきました。
この値で条件ずけされうまく分類されました。
NAND
"and"とは逆になります。引数が両方"1"の場合の場合に"0"となります。
def NAND(x1, x2):
w1, w2, theta = -1.1, -2.1, -2.2
y = x1*w1 + x2*w2
if y <= theta:
return 0
elif y > theta:
return 1
print(NAND(0, 0)) # 1
print(NAND(0, 1)) # 1
print(NAND(1, 0)) # 1
print(NAND(1, 1)) # 0
となります。
重みw1,w2、閾値thetaで分類されているのがわかります。
DeepLearningではこの数値を自ら学習していき設定、判定するものです。この重みw1,w2、閾値thetaの条件を決めていく工程を様々工夫され改良されて精度を上げています。
参考サイト
重みを引数で入れてやる方法
わかりやすく解説してあります。