회고/네이버 부스트캠프 6기 회고

[네이버부스트캠프 ai tech 6기] week1 회고

케이와이엠 2023. 11. 10. 18:20

📚Learned (배운 것)

1️⃣ Numpy

  • ndarray
    • ndarray객체 : np.array([1,4,5,6]← 시퀀스형 자료형, float ← dtype지정)
    • 하나의 데이터 type만 배열에 놓을 수 있음
    • shape : dimensin구성을 반환 위의 경우에는 (4,)
    • dtype : float64, int32 등
  • reshape
    • element의 개수는 같게, 허나 shape의 크기는 변경
    test_matrix = [[1,2,3,4], [1,2,5,8]]
    np.array(test_matrix).shape 
    #(2,4)
    np.array(test_matrix).reshape(8,)
    #array([1,2,3,4,1,2,5,8])
    np.array(test_matrix).reshape(-1,2).shape
    #(4,2) 여기서 -1 : size(=8)기반으로 row 선정해줌
    np.array(test_matrix).reshape(1,-1,2).shape
    #(1,4,2) 되는 거
    
  • flatten
    • 다차원의 array를 1차원으로 변환
    • np.array(test_matrix).flatten() #array([1,2,3,4,1,2,5,8)]
  • indexing, slicing
  • arrange ex. np.arrange(30) / zeros, ones, empty
  • concat하는 법 : vstack, hstack, np.concatenate( , axis = )
  • 비교 : np.all, np.any, np.where, np.argmax, np.argmin

2️⃣ Pandas

  • 시리즈 데이터를 df로 묶어서 보는 편
  • indexing
    • loc - location : index이름 ex)df.loc[:3] ⇒ 3행까지 뽑음
    • iloc - position : index number
  • group by
df.groupby(['month','item']).agg({'duration":"sum"}).reset_index(drop=True)

df.groupby(['month','item']).agg(
		{
			"duration":"sum",
			'date' : "first"
		})

 

3️⃣ vector

  • @연산자, 벡터 행렬 곱연산
    • numpy * operator : 일반적인 곱 연산
    • np.dot, np.matmul, @연사자는 2차원 행렬의 곱연산에서는 모두 같은 결과를 보여준다.
    • matmul과 dot의 큰 차이점은 2가지다. 첫번째는 차이로, dot는 행렬과 상수(constant)의 곱셈을 허용하지만, matmul은 Error를 일으킨다.
    • 두번째 차이는, 3차원 이상의 행렬곱(Tensor multiplication)을 수행할 경우, dot와 matmul은 전혀 다른 결과를 낸다.
  • L1, L2노름으로 학습방법, 최적화를 다르게 함.
    • x = [0, 1, 2]의 L1노름 : 0 + 1 + 2 = 3
    • x = [-6, -8] L2노름을 이용한 두 벡터 사이의 거리 : 36+64 루트 = 10
  • 두 벡터 사이의 거리 계산
l2_norm(x) - l2_norm(y)
  • 두 벡터 사이의 각도 계산
def angle(x,y) : 
#내적은 np.inner을 이용해서 계산한다 
v = np.inner(x,y) - (l2_norm(x) * l2_norm(y)) 
theta = np.arccos(v) 
return theta
  • Proj(x)의 길이는 코사인법칙에 의해 ||x||cos(theta)가 된다

 

4️⃣ 행렬

  • 전치행렬 : transpose matrix
  • 역행렬 : numpy.linalg.inv 로 구할 수 있음.

 

  • 손실함수별로 MLE식 도출하기
 

04. 신경망 학습 - loss function

학습은 훈련데이터로부터 우리의 매개변수의 최적값을 자동으로 획득하는 단계이다. 여기서 매개변수는 2개, 기울기와 편향이다. 이때 최적값은 실제값과 예측값이 가장 비슷한 지점에서 만들

uumini.tistory.com

  • Backpropagation으로 가중치 업데이트 계산하기
 

07. Back Propagation - 역전파 이해하기

뉴럴 네트워크 모델을 설명하기 위한 파라미터들과, loss function, 경사하강법에 대해 이전에 알아보았다. (참고로, 뉴럴 네트워크는 우리가 알고 있는 아래의 관계망이고 이를 학습시킨 결과물이

uumini.tistory.com

  • 손실함수, 경사하강 개념 정리
  • CNN/RNN 개념 정리 
 

CNN - convolution 연산 이해하기

CNN은 이미지에 '커널 (Kernel)'이라는 필터를 이용하여 컨볼루션(convolution)을 취하는 방식으로, 필터를 이동시키면서 필터의 특성에 맞게 강조된 output(feature)를 뽑아낸다. CNN은 Neural Net과 유사하지

uumini.tistory.com

 

RNN - 역전파와 한계점

RNN의 한계점 1) Vanishing / Exploding Gradients 가중치를 업데이트 시키는 Back Propagation Through TIme(BPTT)과정에서, time step이 하나씩 늘어날 때 마다, chain rule 연산도 늘어나게 된다. 아래 그림은 hidden state

uumini.tistory.com

 

✨ 복습할 때 추가로 공부해보기

  • For문 대신 lambda 적절히 사용하기
    • ex) df.groupby([]).transform(lambda x : (x-x.mean())/x.std() )
    • ex) df.groupby([]).filter(lambda x : len(x) ≥3)
  • 손실함수별로 MLE식 도출하기
  • 선형대수 svm개념 익히기
  • Backpropagation으로 직접 가중치 업데이트 계산해보기
  • CNN에서 출력 Feature Map 크기 계산 

 

👥피어세션

첫만남 이후 우리 조만의 그라운드룰을 정했다! 

  • 강의 진도 확인(매주 월요일 분량 정하기)
  • 수업 중 모르는 내용 질문
  • 과제 중 이해가 잘 가지 않는 부분 질문
  • 과제 제출 후 코드 리뷰

 

💊 마음가짐

  • 좋았던 점/ 잘했던 점
    • 무사히 부스트캠프 활동을 시작한 된 것 (험난했던 pre-course, 1-2차 코테, 퇴사 인수인계 등의 과정을 거쳐)
    • 좋은 팀원분들을 다섯명이나 알게 된 것
    • 티스토리를 다시 운영하기로 마음 먹은 것
    • 제공강의 뿐만 아니라 이해될 때까지 추가 자료를 계속 파본 것
  • 아쉬운 점
    • 시간 조율, 체력관리 (10-7시 전후로 개인활동을 해야하는데 매번 진이 빠져서 일찍 피로하게 됨.. 내년에 교환가려면 영어공부도 병행해야하는데 이거 가능할까 ?...?)
    • 마스터클래스때  사전 질문 적극적으로 참여하기
  • 한 주 회고 
    • 새삼 많은 사람들이 AI라는 관심사를 갖고 있구나를 이번 부스트캠프를 통해 느꼈다. CV약 75명, NLP 약 65명, RecSys 약 40명의 사람들이 모였는데 하나같이 열정들이 대단하시다 !! 이들이 경쟁자가 아니라 좋은 동료들임을 잊지 말자. 
    • 부스트캠프를 통해 과연 내가 어떤 것을 얻어가고 싶은지 고민해봐야겠다. 
      일단 최종 커리어목표가 데싸가 맞는지부터 찬찬히 ..