일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 파이썬
- 마이온
- DP
- 멋재이사자처럼
- likelion
- Python
- SQL
- ux·ui디자인
- seaborn
- likelionlikelion
- 프로젝트
- folium
- tog
- Rag
- intern10
- kgc
- DFS
- 멋사
- 그리디
- TiL
- 시각화
- 마이온컴퍼니
- Join
- paper review
- graphrag
- 인턴10
- GNN
- 멋쟁이사자처럼
- 알고리즘
- parklab
- Today
- Total
지금은마라톤중
멋사 AI스쿨 TIL - (30) 본문
2023.04.11
질문🙋🏻♂️: 네트워크를 깊게 쌓으면 대체적으로 성능이 좋아집니다. 하지만 어떤 문제가 발생할까요? 과적합문제 발생 |
질문🙋🏻♂️: 과적합 문제가 발생하면 어떤 방법으로 해결할 수 있을까요? dropout을 사용 |
질문🙋🏻♂️: 모델을 개선해 보는 방법 ? 레이어, 유닛 수 변경하기 Dropout 사용하기 early_stop 값 조정하기 epoch 조정하기 learning_rate 조정하기 batch 사용하기 |
질문🙋🏻♂️: 기울기소실 문제는 네트워크를 깊게 쌓았을 때 back propagation 과정에서 발생합니다. 이 문제는 어떻게 해결했을까요? 0보다 작은 같이 많으면 Leaky Relu 0보다 작은 같이 적으면 Relu |
● 딥러닝에서 사용하는 대표적인 활성화함수
Sigmoid
- Logistic 함수
- 입력 데이터를 0과 1 사이의 값으로 출력하는 미분가능한 연속성을 가진 함수
ReLU
- 음수 값은 버리고 양수는 y=x 형태로 입력 값을 그대로 출력하는 함수
- x > 0 이면 기울기가 1인 직선이고 x<0 이면 함수값이 0이된다.
Tanh
- 입력 데이터를 -1 과 1 사이의 값으로 데이터의 평균이 0이다.
- 함수의 중심값을 0으로 옮겨 sigmoid의 최적화 과정이 느려지는 문제를 해결
질문🙋🏻♂️: 만약 출력 층을 sigmoid에서 softmax 로 변경하고자 한다면 출력층의 units 수를 어떻게 변경해야 할까요? 2개입니다 그럼 출력이 2개로 나올 텐데 둘 중에 어떤 값을 선택할지 넘파이의 어떤 기능으로 찾을까요? argmax 입니다. |
● input_shape 를 쓸 때 이미지든, 정형이든 실수를 많이 할 것 같다면
첫번째 데이터를 가져와서 해당 데이터의 shape 를 그대로 넣어주면 실수를 줄일 수 있습니다.
X_train.iloc[0].shape
질문🙋🏻♂️: X_train.shape[1] 보다 X_train.iloc[0].shape으로 하는게 낫나요? 아님 똑같나요? 똑같습니다 feature의 수를 넣어주는 것은 똑같습니다! 정형데이터가 아니라 이미지 데이터 일 때는 shape가 달라져서 첫번째 데이터 가져와서 그대로 넣어주는게 실수를 줄일 수 있습니다. 예를 들어 MNIST, FMNIST 는 흑백 채널 1개의 2차원이라서 X_train 의 0번째 데이터의 shape를 넣으면 오류를 줄일 수 있습니다. CNN 에서는 컬러이미지를 사용할 예정인데 이 때는 흑백과 shape가 다릅니다. 그래서 여러 상황을 고려하기 보다는 X_train 의 0번째 데이터의 shape 사용한다고 생각하는게 가장 쉽습니다 |
질문🙋🏻♂️: tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=100) monitor 의 값을 loss 했을 때 문제점? 1) Overfitting이 감지되지 않을 수 있습니다. 2) Early Stopping이 올바르게 동작하지 않을 수 있습니다 |
질문🙋🏻♂️: 예제보다 성능을 더 올릴 수 있는 방법 ? 1) feature의 스케일을 조정해줄 수 있습니다. 2) 레이어를 줄이거나 늘려줍니다. 3) Dropout 을 사용해봅니다. 4) early_stop 값을 조정해봅니다 5) epoch를 조정해봅니다. 6) batch를 사용해봅니다. 7) 옵티마이저 ( learning_rate ) , Units의 수를 변경해봅니다 |
질문🙋🏻♂️:Standard Scailing과 Normalization의 차이가 궁급합니다. Standard Scaling은 특성의 평균을 0으로, 표준 편차를 1로 맞추는 방법이지만 Normalization은 특성의 스케일을 0과 1 사이로 조정하는 방법입니다 정규화는 광범위하게 머신러닝 모델이 이해할 수 있는 형태로 수치 데이터를 가공하는 방법을 의미합니다. 텍스트데이터에서 형태소 분석을 통해 텍스트 데이터 전처리 등을 하는 것도 정규화라고 부릅니다 |
● Batch Norm
Batch Norm은 활성화 함수의 입력값에 대한 분포를 정규화하여 활성화 함수의 성질을 보존합니다 !
따라서 , 층의 출력값이 정규화(normalize)되면서 조금 더 안정적인 학습을 돕는 역할을 수행합니다 !
+) 각 층의 출력값을 정규화해주는 역할을 수행하기 때문에 신경망 모델 내에서 활성화 함수 바로 이전에 추가합니다
● 옵티마이저 -> RMSprop
옵티마이저는 모델 학습 시 손실 함숫값을 최소화하는 방향으로 모델의 가중치 값을 갱신하기 위한 전략을 결정!
RMSprop은 학습률이 급격하게 감소하는 현상을 방지할 수 있는 장점이 있다고 합니다.
질문🙋🏻♂️: BatchNormalization 을 제외한 이유가 무엇일까요? 대부분의 값이 바이너리 값이라서 BatchNormalization 을 제외했습니다 |
질문🙋🏻♂️: tf.keras.layers.Dense(units=512, activation='relu', input_shape=X_train.iloc[0].shape), 여기에서 input_shape이 (376,)인데 units=512라고 해도 되나요? input_shape보다 units가 커도 되는지 궁금합니다. 입력값보다 커도 상관은 없습니다. 작아도 상관은 없지만 성능은 돌려보고 낮아졌다면 다시 조정해 볼 필요가 있습니다. |
질문🙋🏻♂️: units와 input_shape간 관계에 대해서도 추가로 설명해주실 수 있나요? 마치 트리계열 모델에서 트리를 몇 개를 만들지 정하는 파라미터 값과도 유사합니다. 트리 계열모델이라면 데이터의 수로 만들 수 있는 트리가 정해져있습니다. units 도 비슷하게 어떤 값을 지정하냐에 따라 성능이 달라집니다. input_shape 값과 너무 큰 차이가 있다면 아니면 input_shape 값보다 너무 작은 값을 설정했다면 제대로 계산되지 않을거에요. 적절한 값을 설정할 필요가 있습니다. 하이퍼파라미터이기 때문에 더 큰게 낫다, 작은게 낫다라기 보다는 실험을 다양하게 해보는 것을 추천합니다. mpg 에서는 feature 가 10개 내외였는데 첫 레이어의 units 의 수를 64개로 설정해 주었습니다. |
● torch.FloatTensor()
: 입력된 텐서의 데이터 타입을 32비트 부동소수점(torch.float32)으로 변경
이미지, 음성, 텍스트 등 다양한 데이터를 모델 입력으로 제공하기 위해서는 데이터를 부동소수점 형태의 텐서로 변환하는 과정이 필요합니다.
-> GPU 연산을 위해 입력 가능한 형태로 바꿉니다
'멋쟁이사자처럼 > Python' 카테고리의 다른 글
멋사 AI스쿨 TIL - (32) (0) | 2023.04.18 |
---|---|
멋사 AI스쿨 TIL - (31) (0) | 2023.04.18 |
멋사 AI스쿨 TIL - (29) (0) | 2023.04.18 |
멋사 AI스쿨 TIL - (28) (0) | 2023.04.18 |
멋사 AI스쿨 TIL - (27) (0) | 2023.04.18 |