본문 바로가기
파이썬/딥러닝

딥러닝에 대한 이해와 딥러닝의 구조

by 큰고양2 2023. 10. 7.

딥러닝

 

딥러닝은 데이터가 입력 되면 데이터의 여러 피쳐간의 가중치를 두어

오차를 계산한다

가중치의 조절은 횟수를 지정하면 정해진 수 만큼 진행 되며

지정하지 않는다면 오차가 줄어들지 않을 때 까지 계속 가중치를 조절하며

최적의 가중치를 찾는 방식이다

 

 

데이터의 전처리

딥러닝을 진행하기 위해서는 먼저 데이터를 전처리 할 필요가 있다

데이터 전처리 과정에는

결측치 처리, 범주형 변수의 가변수화, 스케일링이 포함된다

여기서 주의 할 점은 전처리 과정에는 무조건 스케일링을 포함해야 한다는 점이다

 

모델링

 

머신러닝의 모델링은 모델 선언 -> 학습 -> 예측, 검증의 순서로 진행된다

딥러닝은 머신러닝과는 살짝 다른데

모델 구조 선언 -> 컴파일 -> 학습 -> 예측 및 검증의 순서로 진행이 된다

여기서 학습을 한 이후 학습 곡선을 통해 모델 학습이 진행되는 과정에서 모델의 성능이 어떻게 

변화 되었는지 확인 할 수 있다

 

모델링의 과정- 구조 선언

모델링의 구조 선언에서는 어떤 딥러닝 모델 구조를 가질지 구조를 구상한다

예시 코드를 보면

model = Sequential([Dense(10 , input_shape = (18, ) activation = 'relu') , 
                   Dense(1)])

다음의 코드는 18개의 차원을 가진 데이터를 입력 받아서 1개의 뉴런을 가진 모델을 생성한다는 의미다

레이어가 1개이기 때문에 인풋을 받은 데이터를 선형회귀로 예측을 한다

 

레이어를 다중으로 선언 할 수도 있는데

model = Sequential([Dense(10 , input_shape = (18, ) activation = 'relu') , 
                   Dense(1)])

다음 코드는 18개의 차원을 가진 데이터를 입력 받아서 먼저 10개의 뉴런(차원) 을 가진 레이어로 만들어 가중치를 계산하고 relu 활성화 함수를 통해 1개의 뉴런을 가진 레이어로 결과를 전달해 1개의 뉴런을 가진 데이터에서 다시 가중치를 계산해 최종 결과를 내는 모델을 선언하는 코드다

여기서 최종 레이어가 아닌 앞의 레이어를 히든 레이어라고 부른다

 

 

모델링의 과정- 컴파일

컴파일 과정에서는 선언한 모델이 어떤 방법으로 오차를 계산하고, 어떤 최적화 알고리즘을 사용해 가중치를 조절하고 평가 지표를 어떤 것을 사용할지 정한다

 

model.compile( optimizer = Adam(learning_rate=0.01 ) , loss = 'mse' )

예를 들어 다음 코드는 모델의 학습 과정에서 Adam 최적화 알고리즘을 학습률 0.01로 사용하고, 계산 과정에서 오차는 mse를 오차로 사용한다는 의미다

 

모델링의 과정- 학습

머신러닝의 학습 코드는

model.fit(x_train, y_train)

으로 구성이 되지만

딥러닝에서는

model.fit(x_train, y_train, epochs=10, validation_split=0.2)

형태로 학습 코드를 작성한다

여기서 epochs는 전체 학습 데이터를 몇 번 반복할지 정하는 옵션이고

validation_split은 학습 데이터에서 얼마를 검증 데이터로 사용할지 정하는 옵션이다

예시 코드는 전체 학습 데이터를 10번 반복하고, 입력 데이터의 20퍼센트를 검증에 사용하겠다는 의미다

 

모델링의 과정- 검증

pred = model.predict(x_val)
print('MAE', mean_absolute_error(y_val, pred))

모델을 예측하고 검증하는 방법은 머신러닝과 동일한 코드를 사용한다