목록전체 글 (328)
공부 기록
보호되어 있는 글입니다.
보호되어 있는 글입니다.
▶ AI란? 왜 CV가 AI에 속할까? The theory and development of computer systems able to perform tasks normally requiring human intelligence, such as visual perception, speech recognition, decision-making, and translation between languages. --from the Oxford dictionary AI의 사전적 정의를 보면 사고하고 인과 관계를 분석하는 것 외에도 시각이나 소리에 관련된 지각 능력뿐만 아니라 이해에 관련된 내용도 지능에 포함시키는 것을 볼 수 있다. 결국 AI는 사람의 지능을 컴퓨터 시스템으로 구현하는 것이고 지능은 인지능력과 ..
▶ Sequential Model 일상생활에서 대부분 접하는 데이터는 sequential data이다. ex. 소리, 영상 등 sequential data를 처리하는데 있어서 가장 어려운 점은 받아들이는 입력의 차원을 알 수 없다는 것이다. (길이가 언제 끝날지 모르기 때문) 그래서 앞에서 다뤘던 CNN 같은 모델을 쓸 수가 없다. Naive sequence model 입력이 여러 개 들어왔을 때 다음에 들어올 입력을 예측하는 것이다. 첫번째 입력은 고려할 게 없고, 두번째 입력은 첫번째만 고려하면 되고, 세번째 입력은 첫번째, 두번째를 고려해야한다. 이렇듯 입력이 들어올수록 고려해야 하는 정보들이 늘어난다. Autoregressive model 과거의 몇 개만 의존하는 것이다. ex. ar=1 과거 1..
▶ Convolution 두개의 함수를 잘 섞어주는 operator로 정의하게 된다. 2D image convolution $I$ : 전체 이미지 $K$ : 필터 $(I * K)(i, j) = \sum_m\sum_nI(m, n)K(i-m, j-n) = \sum_m\sum_nI(i-m, i-n)K(m,n)$ 해당 convolution filter의 모양을 해당 이미지에 찍는 것이다. 적용하고자 하는 필터의 모양에 따라 같은 이미지가 다양하게 나오게 된다. input 채널과 output(convolution feature map)채널을 알면 여기에 적용되는 convolution filter의 크기를 같이 계산할 수 있다. convolution을 여러 번 할 수 있다. 항상 집중해서 봐야 할 것은 이 연산을 ..
Important Concepts in Optimization ▶ Generalization 많은 경우에 일반화 성능을 높이는 것이 우리의 목적이다. 학습을 시키면 일반적으로 iteration이 지남에 따라 training error가 줄어든다. 하지만 training error가 0이 되었다고 해서 우리가 원하는 최적의 값에 도달했다는 보장은 없다. 왜냐하면 어느정도 시간이 지나면 학습에 사용하지 않은 데이터에 대해서는 성능이 떨어진다. → test error가 커지게 됨 generalization gap : training error와 test error 사이의 차이 일반화 성능(generalization perfomance)이 좋다는 것은 모델의 성능이 학습 데이터와 비슷하게 나올거라는 보장을 해준..
▶ 좋은 딥러너가 되려면? 구현 능력 수학 능력(Linear Algebra, Probability) 최신 논문 알기 ▶ 인공지능 인공지능 : 사람의 지능을 모방하는 것이다. 머신러닝 : 무언가 학습하려고 할 때 데이터를 통해 학습하는 것이다. 딥러닝 : 기계학습 안에서 우리가 사용하는 모델이 뉴럴 네트워크를 사용하여 학습하는 것이다. → 딥러닝을 연구한다는 것이 인공지능 전체를 연구하는 것은 아니다. ▶ 딥러닝의 중요한 요소 모델이 학습할 수 있는 데이터 해결하려는 문제의 타입에 의존하는 데이터 학습하고자 하는 모델 데이터가 주어졌을 때 데이터를 내가 알고자하는 것(label)으로 바꿔주는 역할을 한다. 같은 데이터, task가 주어졌다하더라도 모델의 성질에 따라 결과가 다르다. loss function..
Multi GPU 학습 오늘날 딥러닝 시대에서는 GPU를 얼마나 확보했는지가 중요한 이슈가 되고 있다. Multi-GPU를 어떻게 다룰 것인가? ▶ 개념 정리 Single vs Multi Single : 1개 Multi : 2개 이상 GPU vs Node GPU : 1대의 컴퓨터(노드) 안에 있는 1대의 GPU Node or System : 1대의 컴퓨터 Single Node Single GPU 1대의 컴퓨터 안에 있는 1대의 GPU 사용 Single Node Multi GPU 1대의 컴퓨터 안에 있는 여러 대의 GPU 사용 (보통 4~8개) Multi Node Multi GPU 여러 대의 컴퓨터 안에 여러 대의 GPU 사용 서버실 생각하면 된다. ▶ 분산 학습 Multi GPU 가지고 학습을 분산하는 ..
▶ model.save() 학습의 결과를 저장하기 위한 함수이다. 학습의 결과를 2가지 방법으로 저장할 수 있다. 모델의 형태(architecture)를 저장할 수 있다. 형태 안에 있는 파라미터만 저장할 수 있다. 모델 학습 중간 과정의 저장을 통해 최선의 결과 모델을 선택할 수 있다. → early stopping 만들어진 모델을 외부 연구자와 공유하여 학습 재연성을 향상할 수 있다. for param_tensor in model.state_dict(): # state_dict : 모델의 파라미터를 표시해주는 함수 -> OrderedDict 타입 print(param_tensor, "\t", model.state_dict()[param_tensor].size()) torch.save(model.sta..
Layer = Block 딥러닝은 하나의 블럭(레이어)을 정의한 뒤에 그 블럭을 연결해서 정보들을 넘기고 역전파 때 다시 weight들을 업데이트하는 구조이다. ▶ torch.nn.Module 딥러닝을 구성하는 Layer의 base class이다. Input, Output, Forward, Backward를 정의해야 한다. 학습의 대상이 되는 parameter(tensor) 정의한다. → nn.Parameter ▶ nn.Parameter Tensor 객체의 상속 객체이다. nn.Module 내에 attribute가 될 때는 required_grad = True로 지정되어 학습 대상이 되는 Tensor이다. 우리가 직접 지정할 일은 잘 없다. (대부분의 layer에는 weights 값들이 지정되어 있다.)..