저번 포스팅부터 이어서 작성하겠다. 저번 포스팅을 보지 못했다면 다시 참고하고 오시기를 바란다.
밑바닥부터 시작하는 딥러닝1 (neural network) #part3-1
이번 시간에는 3장 '신경망'에 대해 설명하겠다. 이번 시간에는 활성화 함수와 행렬을 이용한 신경망 구현에 대해 집중 탐구할 생각이다. 신경망 구현은 다음 시간에 설명하겠다. 목차 활성화 함
hyeong1197.tistory.com
그럼 시작하겠다.
이번 시간에는 신경망에서 행렬의 구현에 대해 설명하겠다. 전개 방식은 내가 직접 만든 ppt를 주로 설명할 것이고, 행렬의 연산에 대한 설명은 생략하겠다.
행렬의 연산 |
1. 행렬의 이해 (이 부분은 ppt 내용만 첨부)

행렬은 2차원이다. numpy를 공부하다 보면, 차원에 대한 이해가 조금 필요한데,
점, 선, 면의 방식으로 이해하면 된다.

1차원과 2차원을 python을 통해 구현해봤다. 멀리서 보면 선과 면처럼 보인다. 흥미롭다.
하나의 리스트 선으로 보면
리스트 안 여러개의 리스트 면
행렬

이해 tip
나는 pandas 데이터 프레임을 먼저 공부하고, 행렬을 배웠다. 어떻게 이해를 했냐면,
행렬을 데이터 프레임으로 생각을 하는 방식을 선택했다.
즉, index와 columns이 없는 데이터 프레임으로 이해하면, 나중에 등장하는 numpy 팬시 인덱싱과 다양한 문법의 이해가 쉬울 것이다.
행렬의 연산

그 외에 다양한 방식이 있지만, 우리는 신경망 구현에 사용되는 연산만 보면 된다.
1. 행렬의 합
2. 행렬의 상수배
3. 행렬의 곱이다.
행렬의 합은 각 원소에 해당하는 값을 더하면 된다.
상수배는 위의 사진처럼 원소 하나 하나 상수배를 해주면 된다.

문제는 행렬의 곱이다. (m*n) * (n*k)의 형식을 따라야한다. -> (m * k)가
주의할 점이 있는데,
교환 법칙은 성립하지 않는다.(AB =! BA)


신경망에서 행렬 |

위의 그림은 x1, x2 입력값에 따른 가중치를 행렬로 표시했다.
X 0차원 : 원소 2개
W 2차원 : 2 * 3 행렬
따라서 y의 출력은 3개가 된다.

이제, w행렬이 2*3이 나올 수 밖에 없는 이유를 설명하겠다.
입력 뉴런: 2
출력 뉴런:3
x1, x2라는 뉴런에서 각 신호가 3개씩 발생(출력 뉴런의 수: 3),
2행이고 각각 가중치가 x1: 3가지, x2: 3가지이니,
2 * 3행렬이 될 수 밖에 없다.
작성 중