�j���[�����l�b�g���[�N�̎d�g�݂⋓�����A���w���_����ł͂Ȃ��APython�R�[�h���痝�����悤�B�܂��̓j���[�����l�b�g���[�N�iDeep Neural Network�j�̏��`�d���t���X�N���b�`�Ŏ�������B
���̋L���͉������ł��B����o�^�i�����j����ƑS�Ă������������܂��B
�@�X�N���b�`�i�����҂��������\�[�X�R�[�h�������胉�C�u�����[���g�����肹���ɁA�����Ȃ��[���̏�Ԃ���R�[�h���L�q���邱�Ɓj�Ńf�B�[�v���[�j���O��j���[�����l�b�g���[�N�iDNN�FDeep Neural Network�A�ȉ��ł́u�j���[�����l�b�g�v�ƕ\�L�j���������Ċw�Ԍn�̏��Ђ⓮��u���A�L���͂�������Ǝv���܂��B�����Ŋw�ۂɁA�u�덷�t�`�d�v�i�o�b�N�v���p�Q�[�V�����j�̂Ƃ���ō��܂��āA�����̓X���[���Ă���l�͏��Ȃ��Ȃ��̂ł͂Ȃ��ł��傤���B�X�̐�����v�Z���̂𗝉����Ă��Ă��A���ƂȂ��S�̑������߂��ɁA
�Ǝ��M�������Č����Ȃ��l�������̂ł͂Ȃ����Ǝv���܂��B
�@�{�A�ځi��b�ҁj�͂����������l�Ɍ������L���ɂȂ�܂��B���̋L���̓j���[�����l�b�g�̎d�g�݂��A���w���_����ł͂Ȃ�Python�R�[�h����w�����Ƃ�_���Ă��܂��B�u������Z�ȍ~�̐��w�͋�肾���ǁA�R�[�h�Ȃ�ǂ߂邺�I�v�Ƃ������ɂ̓s�b�^���̋L���ł��B���Ўʌo�ł͂Ȃ����������ɂ���ŃR�[�h��������悤�ɂȂ�܂��傤�B
�@�{�A�ځi��b�ҁj�̓����́A���`�㐔�ilinear algebra�A�s�Z�j���g��Ȃ����Ƃł��B�܂�NumPy���g���܂���B��{�I�Ɋ|���Z�⑫���Z�Ȃǂ̒��w�܂ł̐��w�݂̂ŁA�j���[�����l�b�g�̃��W�b�N���R�[�f�B���O���Ă����܂��i�����Z���x���̐��w�ɑΉ�����R�[�h�������o�Ă��܂����v�Z�͂��Ȃ��̂ŁA���w���w���x���̒m���ő��v�ł��j�B
�@���`�㐔���g���Ɗm���ɃR�[�h���Z���Ȃ�����I�ł����A�V���v���Ȃ̂ʼn��ƂȂ������ł����C�ɂȂ�܂��B�������d�g�݂ƂȂ郍�W�b�N�𗝉����邽�߂ɂ́A�j���[�����l�b�g�̏��`�d��t�`�d�ł́u���l�̗���v�𒀈�ǂ��Ă����K�v������Ǝv���܂��B���̍ۂɂ́A���`�㐔�̒��ɉB���ꂽ�����́u�|���Z�Ƒ����Z�̐����v�̒��⎆�̏�œW�J�����ǂ��K�v������܂��B�Ⴆ��u��Wx�{b�Ƃ������`�㐔�̎��ɂ́Au���ix1�~w1�{x2�~w2�{�c�{xn�~wn�{b�j�~�m�[�h�����̐������B��Ă���̂ŁA���̃��W�b�N�𗝉�����ɂ́A�����W�J����K�v������킯�ł��B���̂��Ƃ��A�덷�t�`�d�𗝉�����ۂ̖W���̈���ɂȂ��Ă���ƕM�҂͊����܂����B
�@�����ł���Ȃ�A�ŏ�������`�㐔�ɉB����Ă��鐔����W�J������ԂŎ������Ă��܂��悢�A�Ƃ����̂��{�A�ځi��b�ҁj�̒��z�ł��B�S�Ă̐������R�[�h�ɏ����o����Ă���̂ŁA�R�[�h��ǂނ����Ń��W�b�N�����X�ɒǂ��Ă�����Ƃ����킯�ł��i�}1�j�B���̒��⎆�̏�Ő�����W�J����K�v�͂���܂���B
�@�Ƃ͂����A�u���`�㐔�̎����X�̎��Ƀo�����Ƒ�ʂ̃R�[�h�ɂȂ��Ă��܂���ˁH�v�Ƃ�����肪����܂��B�m���ɂ��̒ʂ�ł����A���`�㐔�ŏ������镔���́u�J��Ԃ��̐����v�ɂȂ��Ă���̂ŁA�uPython�̌J��Ԃ������ł���for���[�v�v�ɒu�������邱�Ƃ��\�ł��B�Ⴆ�ΐ��`�㐔�̎��ɂ�����Wx�Ƃ��������́A�}1�̐Ԙg�̂悤�ɓW�J�ł��A�����for���[�v�ŒZ���܂Ƃ߂��܂��B����ł��璷�ł����A�M�҂̊��z�ł́A��������R�[�h�ʂ��ȂƎv���܂��i���茳�ŃR�����g�s�Ƌ�s���O���čs�����v�Z����ƁA���`�㐔�̃R�[�h��őS���Ŗ�100�s�ł������Afor���[�v�̃R�[�h��ł͑S���Ŗ�180�s�ł����B�l�ɂ���ẮA���w�ŔY��100�s�̃R�[�h�����A���w�ŔY�܂Ȃ�180�s�̃R�[�h�̕����������܂���ˁj�B���̓_������u���`�㐔�̌v�Z���e���l��������A�V���v���ȎZ�p�v�Z�����̂܂ܕ\�������R�[�h��ǂޕ��������v�Ƃ����l�����̋L���ł��B
�@���Ȃ��A�j���[�����l�b�g�Ŏg�����w�ɂ́A���`�㐔�̑��A�Δ����ipartial differential�j������܂��B��̓I�ɂ͊��������⑹�����̔������s���K�v������܂��B�������{�A�ڂł́A�������̔������s�����߂̓��������̂܂܃R�[�h�Ƃ��ċL�ڂ��邱�ƂŁA�����̌v�Z�͎��グ�܂���B�Ⴆ�����������̃V�O���C�h���̓����̃R�[�h�͂�����̗p�ꎫ�T�ɋL�ڂ���Ă�����̂��g���܂��i�����̕����̓J���j���OOK�Ƃ����Ă��������j�B�ǂ����Ă����������ƃR�[�h�ɂȂ邩���C�ɂȂ�l�́A�A�ځwAI�E�@�B�w�K�̐��w���� �x�̕Δ����̉��Ȃǂ��Q�Ƃ��Ă݂Ă��������B
�@���j���[�����l�b�g���w�Ԃ��Ǝ��̂����߂ĂƂ������́A���O���w�j���[�����l�b�g���[�N�̎d�g�݂̗����~���߂Ă̎����i�O�ҁ^���ҁ^��ҁj�x�ɖڂ�ʂ��Ă����ƁA��b�p��ƊT�O�A�Ӗ������������������̂ŁA���{�A�ڂ������ł���Ǝv���܂��B
�@�{�A�ڂ́A�܂��u��b�ҁv�Ƃ��āA
�Ƃ���3�{�̋L�������J�\��ł��B���̌�ɁA���`�㐔���g��������A�e�@�\�̂��ׂ��������̑��҂��������Ă��܂��B
�@�O�u���ƈӋC���݂������Ȃ��Ă��܂��܂������A���悢��{�҂ɓ���܂��B��b�ҁi����`���X��j�̓��e�ɑΉ�����m�[�g�u�b�N�͉��L�̃����N��Ŏ��s�^����ł��܂��i��Google Colab�̃C���f���g�̓X�y�[�X2�̐ݒ�ł����A�{�A�ڂ̓X�y�[�X4�ŋL�q�����̂ŁA�{�A�ڂ̃R�[�h���R�s�[���y�[�X�g����ꍇ�̓X�y�[�X����4�ɐ�ւ��Ă��������j�B�{�e�ł́A�R�[�h��Z�����邽�߁A�قƂ�ǂ̊���docstring�i�h�L�������g�R�����g�j���ȗ����܂������A�m�[�g�u�b�N���ɂ͊܂߂Ă��܂��B
�@�܂���{�I�ȃj���[�����l�b�g�i���̗�ł́A���͑w�F2�A�B��w�F3�A�o�͑w�F1�j�̐}���m�F���Ă����܂��傤�i�}2�j�B�ȒP�Ƀ|�C���g��������Ă����ƁA�j���[�����l�b�g�ŗ\������Ƃ��̏��������`�d�iforward propagation�j�ŁA�P���i���w�K�j����Ƃ��̏����i�ڍ�q�j�̒��ŗv�ƂȂ�̂��t�`�d�i�o�b�N�v���p�Q�[�V�����Fbackpropagation�j�ł��ˁB�Ȃ��`�d�i�ł�ρj�Ƃ́A���͂Ȃǂ̐��l���A�l�b�g���[�N���̌������i�R�l�N�V�����A�����N�A�{�A�ڂł��G�b�W�ƌĂԁj��ʂ��Ď��̑w�������͑O�̑w�̃j���[�����i���j�b�g�A�{�A�ڂł��m�[�h�ƌĂԁj�ɓ`����Ă������Ƃł��B
�@�ʏ�͐}2�̍��̂悤�ɉ��ɕ`���܂����A�{�A�ڂł͏ォ�珇�Ԃɐ����������₷���悤�A�i��{�I�Ɂj�}2�̉E�̂悤�ɏc�ɕ`�����Ƃɂ��܂����B���͑w�����ɂ��Ă���̂ŁA���`�d���������ɐi�ނ��ƂɂȂ�܂��B�{�A�ڂň�ԏd�v�ȃe�[�}���u�t�`�d�v�Ȃ̂ŁA�ォ�牺�Ɍ������ēǂ߂�}�ɂ��܂����B
�@����ł͂��������A���������Ƀ[������R�[�h�������Ă����Ƃ����z��ŁA�R�[�h�������n�߂܂��傤�B�t���X�N���b�`�����̃R�c�́A�ŏ����犮���ȃR�[�h�������Ȃ����Ƃł��B���C���ƂȂ鏬���ȓ�������������āA��������X�ɖc��܂��Ă����܂��B�[�w�u�w�K�v�̃��C���́A�j���[�����l�b�g�́u�P���v�����ł���ˁB�������珑���Ă����܂��i���X�g1�j�B
�@���Ȃ���b�ҁi����`���X��j�̃j���[�����l�b�g�̎����ł́APython�̃N���X�͎g�킸�ɁA�S��Python�̊���for���[�v�ŏ����Ă����܂��B���`�㐔�iNumPy�j���g��Ȃ��̂ŁA�f�[�^��1�������i���\�`���f�[�^��1�s���j�������܂��B�f�[�^���܂Ƃ߂ď�������~�j�o�b�`�w�K�Ȃǂ̊e�w�K���@�ւ̑Ή��́u���f���̍œK���v�ɊW���镔���Ȃ̂ŁA���X��i��ҁj�ł��炽�߂Đ������܂��B
# ��肠�������ŁA��̊����`���āA�R�[�h�����s�ł���悤�ɂ��Ă���
def forward_prop(cache_mode=False):
" ���`�d���s�����B"
return None, None, None
y_true = [1.0] # ����l
def back_prop(y_true, cached_outs, cached_sums):
" �t�`�d���s�����B"
return None, None
LEARNING_RATE = 0.1 # �w�K���ilr�j
def update_params(grads_w, grads_b, lr=0.1):
" �p�����[�^�[�i�d�݂ƃo�C�A�X�j���X�V������B"
return None, None
# ---�����܂ł͉��̎����B�������炪�K�v�Ȏ���---
# �P������
y_pred, cached_outs, cached_sums = forward_prop(cache_mode=True) # �i1�j
grads_w, grads_b = back_prop(y_true, cached_outs, cached_sums) # �i2�j
weights, biases = update_params(grads_w, grads_b, LEARNING_RATE) # �i3�j
print(f'�\���l�F{y_pred}') # �\���l�F None
print(f'����l�F{y_true}') # ����l�F [1.0]
�@�j���[�����l�b�g�̌P���ɕK�v�Ȃ��Ƃ́A���X�g1�̒ʂ�A
��3�����ł��i�}3�j�B���ꂼ��̊��̖߂�l���A���̊��̈����ɓn����Ďp����Ă��܂��ˁB�e�߂�l������̏ڍׂ́A���ꂼ��̊��̎������ɂ���docstring�i�h�L�������g�R�����g�j�Ȃǂł��炽�߂Đ������܂��B
�@����ł́A�e����1���������Ă����܂��B���A��������ɓ��삷�邩�������邽�߂ɁA���̃j���[�����l�b�g�̃A�[�L�e�N�`���[���`���ă��f���Ƃ��Đ������Ă����A�T���v���̌P���f�[�^������Ă��������Ǝv���܂��B
�@�}2��}3�Ŏ������̂Ɠ����A���͑w�̃m�[�h��2�A�B��w�̃m�[�h��3�A�o�͑w�̃m�[�h��1�̃��f���imodel�ϐ��j���`���܂��傤�B��b�ҁi����`���X��j�̓N���X���g��Ȃ��̂ŁA�^�v���ŕ\�����悤�Ǝv���܂��B�w�\���ilayers�ϐ��j��d�݁iweights�ϐ��j��o�C�A�X�ibiases�ϐ��j��Python�̃��X�g�ŕ\�����܂��B1�����̌P���f�[�^�ix�ϐ��j��1�����̃��X�g�ŕ\�����܂��i���X�g2�j�B
# �j���[�����l�b�g���[�N��3�w�\��
layers = [
2, # ���͑w�̓��́i�����ʁj�̐�
3, # �B��w1�̃m�[�h�i�j���[�����j�̐�
1] # �o�͑w�̃m�[�h�̐�
# �d�݂ƃo�C�A�X�̏����l
weights = [
[[0.0, 0.0], [0.0, 0.0], [0.0, 0.0]], # ���͑w���B��w1
[[0.0, 0.0, 0.0]] # �B��w1���o�͑w
]
biases = [
[0.0, 0.0, 0.0], # �B��w1
[0.0] # �o�͑w
]
# ���f�����`
model = (layers, weights, biases)
# ���̌P���f�[�^�i1�����j������
x = [0.05, 0.1] # x_1��x_2��2�̓�����
�@�d�݂̏����l�͈ӊO�ɏd�v�Ȃ̂ł����A�����ł͒P���ɑS��0�Ƃ��܂����B�{���ł���A�u�O�̑w�̃m�[�h���~���̑w�̃m�[�h���v�ŃG�b�W�i�����N�j��������������Ȃǂ��āA�K�v�Ȑ��Ƒ������z��\���̏d�݂������������ׂ��ł����A�R�[�h��Z�����邽�߂Ƀn�[�h�R�[�f�B���O���܂����i�]�T�̂�����́A�����Ŏ��������̏����������Ŏ������Ă݂�ƁA���R�[�f�B���O���y���߂邩������܂���j�B
�@�j���[�����l�b�g�̍ŏ��P�ʂ̓m�[�h�ł��B�܂���1�̃m�[�h�ɂ����鏇�`�d�̏������R�[�f�B���O���܂��傤�i���X�g3�j�B���͑w�͉������܂���̂ŁA�B��w�Əo�͑w�ɂ�����m�[�h�̋��ʏ������L�q���܂��Bx�ϐ��́A���X�g2�ŋL�q�����P���f�[�^�ł��B
# ��肠�������ŁA��̊����`���āA�R�[�h�����s�ł���悤�ɂ��Ă���
def summation(x,weights, bias):
" �d�ݕt�����`�a�̊��B"
return 0.0
def sigmoid(x):
" �V�O���C�h���B"
return 0.0
def identity(x):
" �P�����B"
return 0.0
w = [0.0, 0.0] # �d�݁i���̒l�j
b = 0.0 # �o�C�A�X�i���̒l�j
next_x = x # �P���f�[�^���m�[�h�ւ̓��͂Ɏg��
# ---�����܂ł͉��̎����B�������炪�K�v�Ȏ���---
# 1�̃m�[�h�̏����i1�j�F �d�ݕt�����`�a
node_sum = summation(next_x, w, b)
# 1�̃m�[�h�̏����i2�j�F ��������
is_hidden_layer = True
if is_hidden_layer:
# �B��w�i�V�O���C�h���j
node_out = sigmoid(node_sum)
else:
# �o�͑w�i�P�����j
node_out = identity(node_sum)
�@1�̃m�[�h�̏��`�d�����ɕK�v�Ȃ��Ƃ́A���X�g3�̒ʂ�A
�Ƃ���2�̐��w�������ł��i�}4�j�B
�@���ꂼ��̊��̒��g�̎����������܂��B
�@�d�ݕt�����`�a�iweighted linear summation�A�ȉ��ł́u���`�a�v�ƕ\�L�j�Ƃ́A����m�[�h�ւ̕����̓��́ix1�Ax2�Ȃǁj�ɁA���ꂼ��̏d�݁iw1�Aw2�Ȃǁj���|���đ������킹�āA�Ō�Ƀo�C�A�X�ib�j�𑫂����l�ł��i�O�f�̐}4�̍��BPyTorch��Linear�N���X��ATensorFlow�^Keras��Dense�N���X�A���ɂ�Affine�w�Ȃǂɑ������܂��j�B�����for���[�v�ŋL�q�����̂����X�g4�ł��B
def summation(x, weights, bias):
# ��1�f�[�^���A�܂�x��weights�́u�ꎟ�����X�g�v�Ƃ����O��B
linear_sum = 0.0
for x_i, w_i in zip(x, weights):
linear_sum += x_i * w_i # i�́u�ԍ��v�i���w�͊�{�I��1�X�^�[�g�j
linear_sum += bias
return linear_sum
# ���`�㐔���g���ꍇ�̃R�[�h��F
# linear_sum = np.dot(x, weights) + bias
�@���łɁA����̋t�`�d�i�̒��Ŏg���Δ����j�ŕK�v�ƂȂ���`�a�̕Γ����ipartial derivative function�A�{�A�ڂ̃R�[�h�ł͑S�āuder�v�ƋL�q����j�����X�g5�Ɏ������Ă����܂��B
def sum_der(x, weights, bias, with_respect_to='w'):
# ��1�f�[�^���A�܂�x��weights�́u�ꎟ�����X�g�v�Ƃ����O��B
if with_respect_to == 'w':
return x # ���`�au���e�d��w_i�ŕΔ��������x_i�ɂȂ�ii�̓m�[�h�ԍ��j
elif with_respect_to == 'b':
return 1.0 # ���`�au���o�C�A�Xb�ŕΔ��������1�ɂȂ�
elif with_respect_to == 'x':
return weights # ���`�au���e����x_i�ŕΔ��������w_i�ɂȂ�
�@���`�a�̎����e�d�݁^�o�C�A�X�^���͂ŕΔ�������ƁA���̂悤�Ȍv�Z���ʂɂȂ�܂��B�J��Ԃ��ɂȂ�܂����A���w�v�Z�̐����͊������܂��B
�@�����ӓ_�Ƃ��āA�����Ƃ��ēn��������x��d��weights�ɂ́A�ꎟ�����X�g�̌`�ŁA�O�̑w���ɑ��݂���m�[�h�����̒l�������Ă��܂��i�Ⴆ�ΐ}4�̒����Ɏ������u1�̃m�[�h�v�ł���A�O�̑w�̃m�[�h����2�Ȃ̂ŁA2�̒l�����������X�g�ɂȂ��Ă��܂��j�B���X�g5�̕Δ����ł́A�Ⴆ��x1��x2�Ƃ���2�̕ϐ��Ɋւ��Ă��ꂼ��Ő��`�a�̕Δ������s�����ƂɂȂ�̂ŁA�o�͂�2�̒l�����������X�g�ɂȂ�܂��B�o�C�A�Xb��1�����Ȃ��̂ŁAfloat�l�ɂȂ��Ă��܂��B
�@�B��w�ł́A�ł���b�I�ȃV�O���C�h���iSigmoid function�j���Œ�I�Ɏg�����Ƃɂ��܂��B�V�O���C�h���̐����ƁA�������������Python���A���̓����͗p�ꎫ�T���Q�l�ɂ��Ă��������B���X�g6�ɃV�O���C�h���A���X�g7�ɂ��̓����̎����R�[�h���f�ڂ��܂��B���͂����l�Əo�͂����l��float�l�ł��B
import math
def sigmoid(x):
return 1.0 / (1.0 + math.exp(-x))
# ���`�㐔�̏ꍇ��math��np�ɕς���i���O��import numpy as np�j
def sigmoid_der(x):
output = sigmoid(x)
return output * (1.0 - output)
�@�o�͑w�ł́A��A�����C���[�W���āA���̂܂܂̒l���o�͂��銈�������ł���P�����iIdentity function�j���g�p���܂��B������̗p�ꎫ�T�����Q�l�ɁB���X�g8�ɍP�����A���X�g9�ɂ��̓����̎����R�[�h���f�ڂ��܂��B
def identity(x):
return x
def identity_der(x):
return 1.0
�@�ȏ�ŁA���X�g3�ŋ�Œ�`���Ă���3�̊��̎����͏I���܂����B�u1�̃m�[�h�ɂ����鏈���v�̎���������Ŋ����ł��B
�@�j���[�����l�b�g�ɂ́A�w������A���̒��ɕ����̃m�[�h�����݂���Ƃ����\���ł��B�]���āA
����悢�킯�ł��B
Copyright© Digital Advantage Corp. All Rights Reserved.