본문 바로가기

딥러닝 수학25

28. [CNN기초] 1차원 배열 CNN 훈련하기-2(배치구현) 27번 예제에서 1개의 입력에 대해 1개의 필터로 훈련하였다면 3개의 입력에 대해서 1개의 필터로 훈련한다면 어떨까? 추가로 hyper parameter를 엄밀하게 정의해 보겠다. 1. 변수 정의하기 먼저 입력과 출력을 정의해 보자. 입력 X는 (3, 5) 배열이고 목표 Y는 (3, 3) 배열이다. 입력값을 matplotlib로 이미지화 한다면 아래와 같다. 1에 가까울 수록 밝고, 0에 가까울 수록 어둡다. 가중치 W과 편향 B 설정이다. 정해진 값이 아닌 numpy 랜덤 값을 이용하여 생성해 주자. np.random.seed를 설정하여 매번 실행할 때 마다 같은 결과를 얻을 수 있도록 하자. 2. 합성곱 결과 확인하기(특성맵) 특성맵(feature map)이란, 어떤 이미지를 합성곱 한 결과로써 이미.. 2023. 1. 4.
27. [CNN기초] 1차원 배열 CNN 훈련하기-1 일반적으로 CNN은 이미지, 영상등에서 많이 쓰이지만 이번 예제에서 어떤 원리로 훈련하는지 알기 위해 가장 간단한 1차원 배열로 표현해 보자. 문제 입력 [1., 0.7, 0.5, 0.3, 0.1]인 X = (5, ) 배열을 [1, 1, 1,]로 초기화 된 W = (3, ) 필터로 stride = 1인 합성곱을 하고 [0.5]로 초기화 된 B(1, )의 편향을 추가하면 pred = (3, ) 결과가 출력된다. 이때 목표 [1., 0., 0.] Y = (3, )로 pred를 훈련하고 싶다면 어떻게 하면 될까? 1. 문제를 수학으로 표현하기 먼저 연산 과정을 정의하자. 1) 순전파(Forward) 순전파는 입력 Input → 합성곱 Conv(X, W, B) → 합성곱 출력값을 pred로 아래와 같이 정의한다.. 2023. 1. 3.
26. [CNN기초] CNN 개요 오랜만입니다. 2022년은 많이 바빠서 개인 연구 포스팅을 거의 못했네요. 2021년에는 선형 회귀, 분류, 기초적인 완전연결 인공신경망 Neural Net, 경사하강법, 데이터 전처리를 포스팅 하였고, 2022년에는 CNN을 천천히 하자 다짐했건만... 솔직히, CNN을 라이브러리없이 구현하는 것이 상당히 어려운 작업이었습니다. 올해는 또 둘째까지 돌보았기 때문에 애기들 자는 밤 10시에 같이 자는 경우가 많았죠...(ㅜㅜ) 결국 공부하고 완성하는데 1년이란 시간이 필요했습니다. 각설하고 CNN이 무엇인지, 1차원 CNN, 2차원 CNN(image to column), pooling을 구현하고 마지막으로 라이브러리 없이 도형(세모,네모,원)을 구별해 보는 내용을 연재합니다. 1. 합성곱(CNN)을 사용.. 2023. 1. 1.
25 - Deep Neural Nets 구현하기 저번 시간까지 다층 퍼셉트론(Multi-Layer Perceptron, MLP)을 이용하여 학습을 시켜보았다. 정의에 대해 조금 더 이야기를 해 보자면 일반적으로 MLP는 고전적인, 완전 연결 신경망으로 볼 수 있는데 '일반적으로' 3개의 층에 sigmoid, tanh의 활성화 함수를 가진 신경망을 이야기한다. (본인의 예제에서 활성화 함수를 relu를 사용하였지만...) 여기서 DNN은 더 확장하여 순환(RNN, LSTM)을 할 수 있다던지, 완전 연결이 아니라던지, 활성화 함수가 0 또는 1이 아니라던지 등등 더욱 포괄적이고 상위적인 개념이 포함된다. 단순히 은닉 층 개수로 나눌 수는 없다. 제목은 DNN으로 거창하게 하였지만, 사실 MLP는 DNN의 하위개념이므로(...) 구현 상 큰 차이가 없다... 2022. 4. 20.