Data/개념 정리

[밑러닝 3] 제 5고지, Dezero의 도전

neulvo 2023. 2. 22. 17:38

52. GPU 지원

53. 모델 저장 및 불러오기

p452. 앞의 코드에서 파일을 저장할 때 try 구문을 사용했습니다. 사용자에 의해 발생하는 'Ctrl + C' 등의 키보드 인터럽트에 대비한 보호 코드입니다. 이 try 구문 덕분에 저장 도중 인터럽트가 발생하면 파일은 삭제됩니다. 불완전한 상태의 파일이 만들어지는 일을, 그리고 나중에 그런 파일을 읽어오는 일을 사전에 방지하는 것이죠.

54. 드롭아웃과 테스트 모드

p455. 신경망 학습에서는 과대적합이 자주 문제가 됩니다. 다음은 과재적합이 일어나는 주요 원인입니다.
1. 훈련 데이터가 적음
2. 모델의 표현력이 지나치게 높음
첫 번째 원인 때문이라면 데이터를 더 확보하거나 데이터 수를 인위적으로 늘리는 데이터 확장(data augmentation)을 이용하면 효과적입니다.
두 번째 원인에는 가중치 감소(weight decay), 드롭아웃(dropout), 배치 정규화(batch normalization) 등이 유효합니다.

p457. 머신러닝에서는 앙상블 학습(Ensemble Learning)이 자주 사용됩니다. 앙상블 학습이란 여러 모델을 개별적으로 학습시킨 후 추론 시 모든 모델의 출력을 평균 내는 방법입니다. 신경망으로 예를 들면 다섯 개의 동일한 (또는 유사한) 구조의 신경망을 준비하고, 각각을 독립적으로 학습시킵니다. 그런 다음 테스트할 때는 다섯 신경망이 출력한 값들의 평균을 '결과'로 냅니다. 이렇게 하면 인식 정확도를 몇 % 정도 향상시킬 수 있음이 실험적으로 알려져 있습니다. 앙상블 학습은 드롭아웃과 가까운 관계입니다. 왜냐하면 드롭아웃은 학습 시 뉴런을 임의로 삭제하는데, 이를 매번 다른 모델을 학습하고 있다고 해석할 수 있기 때문입니다. 즉, 드롭아웃은 앙상블 학습과 같은 효과를 신경망 하나에서 가상으로 시뮬레이션한다고 간주할 수 있습니다.

55. CNN 메커니즘(1)

p465. 패딩을 사용하는 주된 이유는 출력 크기를 조정하기 위해서입니다. 예를 들어 (4,4) 형상의 입력 데이터에 (3,3) 형상의 필터를 적용하면 출력 형상은 (2,2)가 되어, 크기가 입력 데이터보다 2칸씩 줄어들게 됩니다. 그래서 합성곱 연산을 반복 수행하는 깊은 신경망에서는 문제를 일으키죠. 합성곱 연산을 거칠 때마다 공간이 축소되다 보면 어느 순간 더 이상의 합성곱 연산을 할 수 없게 되기 때문입니다. 이런 사태를 피하기 위해 패딩을 이용합니다. 앞의 예에서는 패딩의 폭을 1로 설정하여 출력 형상이 원래의 입력과 같은 (4,4)로 유지되었습니다.

56. CNN 메커니즘(2)

p471. [그림 56-3]에서 보듯 합성곱 연산에서는 필터 수도 고려해야 합니다. 따라서 필터의 가중치 데이터는 4차원 텐서인 (output_channel, input_channel, height, width)) 형상으로 관리합니다. 가령 채널 수가 3개고 가로, 세로 크기가 (5,5)인 필터가 20개 있다면 형상은 (20,3,5,5)가 됩니다.

57. Conv2d 함수와 pooling 함수

58. 대표적인 CNN(VGG16)

p496. 학습된 가중치 데이터를 사용하여 미지의 데이터를 추론할 때는 모델을 학습시켰을 때와 똑같은 전처리를 해줘야 합니다. 그렇지 않으면 모델에 입력되는 데이터의 형태가 달라지기 때문에 올바로 인식하지 못합니다.

59. RNN을 활용한 시계열 데이터 처리

60. LSTM과 데이터 로더

 

728x90