본문 바로가기
TIL/Boostcamp AI tech

[Boostcamp] Week1 - Day2. 하루 정리 :: seoftware

by seowit 2021. 8. 5.
목차
1. 강의정리
    1-1. AI Math - chap5. 딥러닝 학습방법 이해하기
    1-2. AI Math - chap6. 확률론 맛보기
2. 과제
    2-1. Baseball
    2-2. Morsecode
3. 피어세션 정리
4. 데일리 회고 

 


📜 강의 정리 


[AI Math] Chapter5. 딥러닝 학습방법 이해하기

⦁ 지난시간에는 데이터를 선형모델로 해석하는 방법을 배웠다면 이제부터는 비선형모델인 신경망(neural network)를 배울 예정
⦁ 신경망을 수식으로 분해  
- O = Wx  + b
- 소프트맥스 : 모델의 출력을 확률로 해석할 수 있게 변환해주는 연산
  분류 문제를 풀 때 선형모델과 소프트맥스 함수를 결합하여 예측
학습을 하는 경우에는 softmax 사용하지만 추론의 경우에는 원핫벡터로 최대값을 가진 주소만 1로 출력하는 연산을 사용해서 softmax를 사용하지 않는다
- 신경망은 선형모델과 활성화함수를 합성한 함수
- 활성함수는 비선형함수로 (소프트맥스와 달리 모든 출력값을 다루지 않고) 각 노드에 개별적으로 적용하여 새로운 잠재벡터(H)를 만든다
⦁ 활성함수
- 비선형 함수로서 딥러닝에서 매우 중요
- 활성함수를 쓰지 않으면 선형모형과 차이 없음 - 이거 이유 찾아보기
- 시그모이드, tanh, ReLU(가장 많이 사용)  
- 각 벡터에 적용되며 벡터의 구성 요소 하나하나에 적용
⦁ 층을 여러개 쌓을수록 목적함수를 근사하는데 필요한 뉴런(노드)의 숫자가 훨씬 빨리 줄어들어 좀 더 효율적으로 학습이 가능
⦁ 딥러닝 학습원리 : 역전파 알고리즘
- 역전파 알고리즘을 이용하여 각 층에 사용된 파라미터를 학습
- 역전파 알고리즘은 합성함수 미분법인 연쇄법칙 기반 자동미분을 사용


[AI Math] Chapter6. 확률론 맛보기

 

⦁ 딥러닝은 확률론 기반의 기계학습 이론에 바탕을 두고 있습니다
⦁ (회귀) L2 노름은 예측오차의 분산을 가장 최소화하는 방향으로 학습 유도
⦁ (분류) 교차엔트로피는 모델 예측의 불확실성을 최소화하는 방향으로 학습 유도
⦁ 이산확률변수 vs 연속확률변수
- 이산형 확률변수는 확률변수가 가지고 있는 경우의 수를 모두 고려하여 확률을 더해서 모델링
- 연속형확률변수는 데이터 공간에 정의된 확률변수의 밀도 위에서 적분을 통해 모델링  
⦁ 조건부확률과 기계학습
- P(y|x) : 입력변수 x에 대해 정답이 y일 확률을 의미(연속확률분포의 경우 확률이 아닌 밀도로 해석)
- P(x)는 입력 x에 대한 주변확률분포로 y에 대한 정보를 주진 않음
- 로지스틱 회귀에서 사용했ㄷ너 선형모델과 소프트맥스 함수의 결합은 데이터에서 추출된 패턴을 기반으로 확률을 해석하는 사용
- 회귀 문제의 경우 조건부기대값 E[y|x] 을 추정합니다
⦁ 기대값은 데이터를 대표하는 통계량이면서 동시에 확률분포를 통해 다른 통게적 범함수를 계산하는데 사용(평균과 유사)
⦁ 몬테카를로 샘플링
- 기계학습의 많은 문제들은 확률분포를 명시적으로 모를 때가 대부분
- 확률분포를 모를 때 데이터를 이용하여 기대값을 계산하려면 몬테카를로 샘플링 방법을 사용
- 몬테카를로 샘플링은 독립추출만 보장된다면 대수의 법칙에 의해 수렴성을 보장
 
 



👩‍💻 과제 수행 과정


[필수과제] 4. Baseball

기능 구현 기본 코드 짜는 건 30분도 안 걸려서 뚝딱 짜서, 필수 과제 1~3의 난이도겠지? 생각했는데 아니었다.. 출력문 형식을 지켜야하고, 모든 에러를 처리해야 해서 메인 함수에서 예외처리 하는데 3시간을 사용했다..  정말 아래 Stopiteration 에러랑 False is not true 뜨는 에러 계속 수정해도 나아지지 않아서 결국 코드를 처음부터 새로운 마음으로 다시 구현했다.

에러 메세지

새롭게 짠 후, input에 다양한 케이스를 넣어서 문제를 찾을 수 있었다. 재게임을 물어보는 input에서 wronginput을 입력하면 다시 물어보는데, 이 때 다시 물어보고 제대로 입력하면 return을 해줘야 하는데 해주지 않아서 호출된 시점에서의 값이 return 되는 문제가 있었다.

우여곡절 끝에 성공한 코드를 보고 기뻤다. 테스트 코드 셀에 에러가 안 떠서 정말 소리지르고 싶을 정도로 기뻤다.

실제 서비스 중인 프로그램 중에도 정말 다양한 인풋이 있을 수 있고 이런 테스트 케이스를 모두 고려해주는게 힘들겠다는 생각이 들었다. 

 

[필수과제] 5. Morsecode

Baseball 과제 비해 금방 끝났던 과제였다. 이것도 다양한 경우를 고려해줬어야 했는데, 에러 원인을 찾아 가장 오래 헤매었던 부분은 영어 어를 모스코드로 바꿀 때 띄어쓰기를 두 번 이상한 문자열을 처리해주는 것이었다. 성공하면 아래처럼 "Congratulation!" 뜨는데 이거 너무 좋다💖

Congratulation!


🙋‍♀️피어세션

 

1. 내일 있을 "피어세션이 피었습니다" 발표자를 뽑고 발표자료 만들기

2. 강의/과제 중 모르는 것 질문

   - 몬테카를로 샘플링 적분 예제 질문

   - baseball 과제에서 에러 내용 봐주기

3. 그라운드룰 추가

   - 기본 일정 (이론, 실습 관련 질문) 이후 질문 게시판을 같이 읽어보며 토의

4. 규칙 추가

   - 슬랙에 한 주차 회의록을 모아 볼 수 있도록 주차별로 쓰레드로 회의록 정리한 것 올리기(모더레이터 역할)

   - 슬랙 확인 시 이모지 달아서 확인했음 표현 ✅


💌 데일리 회고

 

# 예외처리

baseball 과제를 하며 정말 조건문의 중요성을 깨달았다. 또한 앞으로는 기본적으로 함수가 return을 내가 원하는 대로 하고 있는지 확인해야 겠다. 특히 재귀에서는 return 이 꽤 복잡한데, 이 경우 특히 조심해야겠다. 에러의 원인을 알 수 없고 다른 사람들과 코드를 공유할 수 없어서 정말 답답했다. 이런 경우에는 틀린 것에 계속 집착하고 갇혀서 생각을 하기 쉬운데, 차라리 신나는 노래 하나 듣고 생각 비운 다음에 천천히 다시 짜는게 더 도움이 되는 것 같다. 그렇게 하면 에러도 보이고 새로운 코드라 지겹지도 않은 느낌?이 든다

 

# 피어세션이피었습니다

내일 있을 피어세션이피었습니다 시간을 위해 사진과 자기소개를 준비했다. 사실 나는 나에 대해 말하는 것보다 코드를 짜는게 더 좋다. 단톡에 내 사진을 보내는 것만큼 민망한 일이 없는 것 같다ㅋㅋㅋ 친구들이랑 있을 때는 또라이 같다는 말도 많이 듣고 극외향적인 성격인데, 아닌 경우에는 이것 저것 생각도 많아지고 유난히 내성적으로 바뀌는 것 같다. 아무래도 아직은 초반기라 더 그런 것 같다.

댓글