새소식

AIVLE School DX 3기

[에이블스쿨 8주차] 딥러닝2(히든레이어)

  • -
728x90
반응형

 

더보기

model.fit(x_train, y_train) 을 하는 순간

  1. 가중치에 (초기)값을 할당한다. [초기값은 랜덤으로 지정]
  2. (예측) 결과를 뽑는다.
  3. 오차를 계산한다.
  4. 오차를 줄이는 방향으로 가중치를 조정한다.(Optimizer)
  5. 단계1로 올라가 반복한다.

=> 딥러닝의 학습 과정 : ⭐파라미터 or 가중치를 업데이트

 

바람직한 곡선의 모습

  • 초기에 급격히 줄어드는가?
  • 어느 구간부터는 수평선인가?
가중치를 잘 줬군~~

 

첫 번째 레이어에는 input_shape(피처의 분석단위)를 지정해줘야한다.

 

epos = n

전체 데이터를 n번 반복해서 실행해줘

 


1️⃣Hidden Layer

 input layer와 Output layer 사이에 추가한 부분을 Hidden Layer라 한다.
 input_shape 는 첫번째 layer만 필요

▪ activation
   - 히든 레이어는 활성함수를 필요로 합니다.
   - 활성함수는 보통 ‘relu’를 사용

 

출처 : 너굴님

마지막 레이어는 무조건 output(node 수)가 1개여야 함.

  • sequential: 모델 타입
  • Dense: 레이어 타입(안에 옵션)
  • Dense는 '모으는' 레이어
  • Dense 레이어는 앞의 레이어의 모든 노드들과 연결

 

 

⭐layer 여러 개 : 리스트[ ] 로 입력

 

활성화 함수(Activation Function)

현재 레이어(각 노드)의 결과값을 다음 레이어(연결된 각 노드)로 어떻게 전달할지 결정/변환해주는 함수
  • Hidden Layer에서는 이런 선형함수를 비선형 함수로 변환해 주는 역할
  • Output Layer에서는 결과 값을 다른 값으로 변환해 주는 역할(분류에서 필요)

 

✅relu(정류함수)

  • 선형함수를 비선형으로 바꿔줌
  • 0이하에서는 0을 0 이상으로는 그대로 출력해주는 함수
model1 = Sequential([Dense(8, input_shape = (nfeatures,), activation = 'relu'),
                     Dense(1)])

# Sequntial[dense(h1노드수, 인풋레이어,엑티베이션),dense(h2노드수,h1노드수,엑티베이션),dense(아웃레이어)]

💙요약

 

딥러닝 전처리

  • NaN 조치, 가변수화, 스케일링

 

Layer

  • 첫 번째 Layer에는 input_shape를 받는다. (분석단위의 shape)
    • 2차원 데이터셋의 분석단위 1차원 → shape는 (feature 수, )
  • Output layer의 node 수 : 1
  • Activaion Function
    • hidden layer에 필요 (비선형 모델로 만드려고 → hidden layer를 여럿 쌓아서 성능을 높이려고)
    • 분류 모델에서는 Out Layer에 활성화 함수 필요(회귀 모델에서는 불필요)

 


2️⃣Feature Respresentaion

모델 정확도를 높이기 위해서 주어진 데이터를 예측 모델의 문제를 잘 표현할 수 있는 features로 변형시키는 과정이다. 

 

👀Hidden Layer에서 벌어지는 일

Hidden Layer는 블랙박스 모델의 일종이다.

 

출처 : https://journals.plos.org/plosone/article/figures?id=10.1371/journal.pone.0182580

 

 

  • 중간에 노드가 적은 레이어 하나를 넣어서 변수가 무작정 많아지고, 모델이 복잡해지는걸 줄인다.
  • 0보다 작으면 0을 전달하고, 0보다 크면 그 값을 그대로 전달한다.

3️⃣이진분류

 

함수

  • 입력 값(input) 을 넣으면, 출력 값(Output) 을 줍니다.
  • 입력 값을 𝒙 , 출력 값을 𝒚 로 표현합니다.
  • 그러므로, 𝑥 를 𝑦 로 변환transformation 시켜준다고 할 수 있습니다.

 

회귀(Regression)

activation = 'sigmoid'

loss= 'binary_crossentropy'

 


이진분류

 

⭐활성 함수Activation Function

  • Node의 결과를 변환해주는 함수가 필요

 

 


elbow curve

휴리스틱 방법 중 하나
가성비가 떨어지는 구간

출처 : https://en.wikipedia.org/wiki/Elbow_method_(clustering)

 

 

 

pred = model.predict(x_val)

# activation이 sigmoid --> 0 ~ 1 사이의 확률값.
# 그러므로 cut-off value(보통 0.5)를 기준으로 잘라서 0과 1로 만들어 준다.
pred = np.where(pred >= .5, 1, 0)

💙요약

 

구분 Hidden Layer Output Layer Compile
Activation Activation Node 수 optimizer loss
Regression relu X 1 adam mse
2-Class relu sigmoid 1 adam binary_crossentropy
728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.