jwkwak45 / AIstudy.github.io

인공지능 스터디
1 stars 1 forks source link

7/1 ~ 7/7 : 1주차 정리 #3

Open jwkwak45 opened 5 years ago

jwkwak45 commented 5 years ago

7/1 4가지 CNN 살펴보기: AlexNET, VGG, GoogLeNet, ResNet Revolution of Depth -> Layer 를 Deep 하게 쌓음과 동시에 성능을 좋게하기 위해서는??

AlexNet

VGG

GoogLeNet -22 레이어

Inception v4

ResNet

jwkwak45 commented 5 years ago

7/2 [실습] 이미지 처리 실습하기

jwkwak45 commented 5 years ago

7/3 [실습] MNIST 데이터셋 사용법 익혀보기

-28x28 이미지를 한줄로 편 784 x 55000개의 트레이닝 데이터, 10개의 라벨(클래스) x 55000

~ 여담으로, 강의를 보다보니 느끼는데 이게 한 2년 정도 밖에 안된 강의 같은데도 텐서플로우 같은게 버전 차이가 꽤 나네요 ㅎㅎㅎ 발전속도가 엄청 빠른거 같아요.

YunjeongPARK1 commented 5 years ago

파일 업로드가 안되어 dropbox에 AI study 폴더를 만들어 넣었습니다.ㅠㅠ

YunjeongPARK1 commented 5 years ago

실습 2 진행중인데 from scipy.misc import imresize 에서 imresize가 죽어도 import가 안되네요ㅠㅠ

jwkwak45 commented 5 years ago

혹시 어떤 환경에서 진행중이신가요??

jwkwak45 commented 5 years ago

7/4 Overfitting을 막는 regularization


책 리뷰

YunjeongPARK1 commented 5 years ago

파이썬 3.6 이고 윈도우에서 진행하고 있어요!

YunjeongPARK1 commented 5 years ago

<overfitting을 막는 regularization 1>

-regularization? : overfitting을 막는 것 (*overfitting : underline function을 예측하는 것을 벗어나 과하게 학습데이터를 잘 맞추나 테스트데이터에서는 성능이 악화되는 모델이 만들어지는 것. 대부분 underline function을 모르기 때문에 in-sample error(학습데이터 에러)와 out-sample error(테스트 데이터 에러)의 차이인 generalization performance를 보고 판단한다. )

: 모든 머신러닝에 있어서 중요하다.

: deeper layer를 사용할 경우 성능이 좋아질 가능성이 있으나 overfitting이 발생할 가능성 또한 높아진다. -> 그래서 regularization이 필요하다.

-regularization 구체적인 방법들

1)data 많이: 데이터를 많이 모으거나, data augmentation을 통하여 데이터를 늘리는 것

2)적절한 모델 사용(??)

3)앙상블 : 여러 번 학습시켜 만든 모델들의 평균을 이용. 기본적으로 성능이 높아지기 때문에 대부분 다 앙상블을 사용하게 됨.

4)여러 테크닉 : Dropout, DropConnect, BatchNorm

5)Limiting the Capacity : (1)layer수 제한 (2)Early stopping (3)weight-dacay(parameter를 너무 크게 하지 않는 것)

*weight-dacay 잘 이해가 안가는 부분

*dropout : 학습할 때만 노드 몇개를 꺼버리는 것

*dropConnect : weight를 끄는 것

*Batch Normalizaiton : 가장 중요한 테크닉. 범용적으로 쓰임. : batch의 평균을 빼고 표준편차로 나누어 '정규화'하는 것이 핵심. : benefits : (1) Increase learning rate (2)remove dropout (3) remove L2 weight decay (4)Accelerate learning rate decay (5) Remove Local Response Normalization

YunjeongPARK1 commented 5 years ago

<overfitting을 막는 regularization 2>

책 리뷰

  1. Parameter Norm Penalties 제곱을 더하거나 절댓값을 더하는 식으로 penalty를 주는 것 (?)

  2. data augmentation : 노이즈를 집어넣는 것도 한 방식이다.

  3. Noise Robustness : layer 중간중간에 noise를 집어 넣는 것. weight에 노이즈 집어넣음. 혹은 Label-smoothing

  4. Semi-Supervised Learning : representation을 찾는 것

  5. Multi-Task Learning : 한 번에 여러문제를 푸는 것 : shared hiden node가 representation을 잘 찾아낸다. 이것이 성능을 향상시키는 핵심.

  6. Parameter Tying and Parameter Sharing : 궁극적으로는 parameter 수를 줄이는 역할을 한다. : Parameter Tying : 입력이 다른데 비슷한 일을 할 때 어느 단의 layer를 공유하거나 하는 것. : Parameter Sharing : CNN이 일종의 파라미터 쉐어링.

  7. Sparse Representation : 어떤 아웃풋의 대부분이 0이 되기를 원하는 것. : sparse weights : weight에 0이 많은 것 : sparse activations : activation에 0이 많은 것. 예 ) ReLU

  8. Bagging and Other Ensemble Methods : Bagging : Low bais & high variance -> low bais & low variance : 평균을 내면 된다. 예)앞에서 설명한 ensemble

    : Boosting : high bais & low variance -> low bais & low variace : sequential하게 붙이면 된다. 예 ) AdaBoost

  9. dropout

  10. Adversarial Training : 입력단에 굉장히 작은 노이즈를 넣음 -> 아웃풋이 변함 : 오버피팅이 존재한다는 것을 의미.

YunjeongPARK1 commented 5 years ago

<overfitting을 막는 regularzation 질문>

  1. 책 리뷰 - 1. Parameter Norm Penalties에서 제곱을 더하거나 절댓값을 더하는 게 어떤 패널티가 된다는 것인지 잘 이해가 안 간다.

  2. 책 리뷰 - 4. 에서 representation을 찾는 것이 무엇인지 이해가 안 간다. : representation이란 쉽게 말해 모델의 성능을 나타내는 하나의 지표이다.

  3. 책 리뷰 - 7. 에서 아웃풋에 0이 많아지는 것이 regulation에서 왜 중요한 지 모르겠다.

  4. 책 리뷰 - 8. 에서 sequential하게 붙인다는 것이 어떻게 붙인다는 것인지 잘 모르겠다.

  5. 책 리뷰 - 9. adversarial example이 존재하면 오버피팅되어 있을 것이라고 짐작할 수 있다는 것까지는 이해를 했는데 그래서 그 이후에 어떻게 한다는 건지 잘 모르겠다. adversarial example이 없을 때까지 학습시킨다는 건가? 그냥 테스트용으로 끝인가?

  6. weight-dacay가 잘 이해가 안 된다. 역전파에 쓰이는 수식과 딥러닝 전체적인 흐름을 제대로 이해하고 있지 못해서 그런 것 같다. E(w) = E0(w) + 1/2(람다)(서메이션i)wi^2 이 수식이 의미하는 바가 무엇인지 잘 이해가 안된다.

YunjeongPARK1 commented 5 years ago

<Nature 논문으로 살펴보는 AlphaGo 알고리즘>

-Complexity of Go : 바둑은 10^360만큼의 경우의 수를 가져서 체스와는 달리 경우의 수를 모두 고려하는 알고리즘은 존재할 수 없다.

-Monte-Carlo Tree Search : 제일 상대방이 둘 것 같은 수를 가정한 후 search : selection - extension - simulation - backpropagation : 위 단계 각각에 딥러닝 기법이 사용된다.

-MCTS in AlphaGo : 1) Rollout policy, 2) SL policy network : 사람의 기보로 학습 : 3) RL policy network : 사람의 기보 + 알파고 기보, value network를 학습할 때만 영향을 준다. : 4) Value network : 판세를 평가. 지금 판이 나에게 얼마나 좋은지 : selection, extension -> SL policy network : simulation, backpropagation -> rollout network, value network : value network -> RL network

-Training : Rollout Policy Net, Supervised Learning Policy Net, Reinforcement Learning Police Net, Value Nedt

-Input feature : 기존의 바둑에 대한 지식(어디에 두는 게 좋은지 등)을 이용하여 Input에 depth를 준 것.

-Training policy nets (1)Rollout/ SL Network : policy "gradient" Reinforcement Learning (수식 이해 필요) (2)Reinforcement Learning(RL) Network : 이겼을 때 1 졌을 때 -1 (수식 이해 필요) (3)Value Network : 사람 기보만 가지고 하면 오버피팅되서 알파고끼리 둔 데이터를 더함. (수식 이해 필요)

-Execution phase (1)Selection Rule : 노드 s에서 어떤 화살표(s,a)를 선택할 지 고르는 것. (상태 s에서 어떤 행동 a를 할 지 고르는 것) : 이전의 확률에 비례하나 반복된 방문과 함께 감소하는데 이는 탐색을 위함이다.

(2)Expansion Rule : 카운트가 임계치를 넘으면(어떤 노드에 많이 방문되면) 다음 상태가 트리에 추가 된다.

-edge가 가지는 정보 (1)p(s,a) (2)Nv(s,a), Nr(s,a) : value net과 rollout net의 평가의 개수 (3)Wv(s,a): value net에서 임계치가 넘었을 때 이길 것 혹은 질 것이라고 평가한 값, Wr(s,a): 끝까지 다 해봐서 얻은 스코어

-다음 노드의 최종 선택은 엣지가 가지는 정보 네가지를 다 고려해서 정해진다.

-결과 : 성능이 좋고, 알고리즘만큼 중요했던 것이 분산 컴퓨팅 기술.

-자신의 도메인에서 기존의 문제푸는 방법론에 인공지능을 잘 섞어서 새롭고 뛰어난 방법론을 만드는 것이 좋은 연구 방향인 것 같다.

jwkwak45 commented 5 years ago

7/5 Nature 논문으로 살펴보는 AlphaGo 알고리즘

jwkwak45 commented 5 years ago

7/6 [실습] 기본 Tensorflow 문법 실습

-텐서 플로우는 기본적으로 설계도를 만든다는 느낌. computational graph를 그리고, 그걸 돌리는 키가 세션

jwkwak45 commented 5 years ago

7/7 [실습] Logistic Regression으로 숫자 분류기를 구현하기

YunjeongPARK1 commented 5 years ago

<nature 논문으로 살펴보는 AlphaGo 알고리즘 질문>

  1. Training policy 에 나온 수식들

  2. selection Rule에 나온 수식들

  3. 그래서 어떤 구조로 인공지능이 사용된 것인지? 알고리즘의 전체적인 틀이 안 잡힌다.

YunjeongPARK1 commented 5 years ago

<MNIST 데이터셋 활용하기>

-(row : 데이터 개수, col = 차원) : 이 때 차원은 행렬을 한 줄로 편 벡터를 사용한다. 예) 28 x 28 이미지 => 784 크기의 벡터

YunjeongPARK1 commented 5 years ago

<기본 tensorflow 문법 실습>

-tensorflow : '설계도'같은 것 : 'computational graph'를 만듬. : 블록쌓기 하듯이 밑단부터 쌓은 다음 윗단을 call 하는 구조를 가지며 이 구조가 장점.

-session : 그걸 돌리는 키 : sess.run() : 어떤 값을 넣었을 때 반드시 session을 통해 돌려야 원하는 대로 나옴.

-constant

-variable : 학습시키고 싶은 파라미터 (weight, bias) : 반드시 초기화 시켜주어야 함 : tf.global_variables_initializer()

-placeholder : 입력, 출력값을 넣을 통로/입구를 선언하는 것. : [데이터개수, 데이터의 차원]

-operation : +, x, CNN, activation 등 원하는 연산을 넣는다.

-feed-dict : placeholder로 만든 통로에 실제 데이터를 집어넣는 명령어

YunjeongPARK1 commented 5 years ago

<Logistic Regression으로 숫자 분류기 구현하기>

-분류 문제를 풀 수 있는 가장 간단한 방법론

-cross entropy(CE) loss function을 이해하는 것이 중요

-cost function을 줄여서 목적을 달성하고자 하나 비용 함수값이 줄어든다고 하여서 반드시 목적을 달성할 수 잇는 것은 아니다. 내 문제에 맞는 비용함수를 디자인하고 최적화하는 것이 중요하다.

-일반적으로 많이 사용하는 CE loss function과 squared loss function의 차이를 알면 좋다.

-CE : 확률분포 p(target distribution)와 q(estimate distribution) 사이의 거리 : 원래 둘 간의 거리를 알려면 symmetry해야 한다. 즉, H(p,q)와 H(q,p)가 같아야 한다. : 현재 function H(p,q)는 symmetry가 없어서 거리 개념은 아니지만 거리와 비슷한 의미를 같는다.

: *softmax approximation : 뉴럴넷에서 나온 값에 exp()을 취하고 전체의 합으로 나누어줌 : 0과 1사이의 값이 됨, 합쳐서 1이 됨 -> 확률로 만들어준 것. : target은 one-hot coding이기 때문에 자연스럽게 확률로 볼 수 있음. : target 확률과 estimation 확률 간의 거리를 줄이는 개념.

: target이 1이 되는 클래스에 해당하는 estimate의 숫자만 높이고 다른 것들은 0이 되어 고려하지 않게 됨. : 분류에서는 제일 큰 숫자가 들어간 것만 고려하기 때문에 위의 메커니즘이 가능해짐.

*squared loss function과의 차이 : 뉴럴넷이 뱉어내는 모든 숫자를 바꾸어주려고 함. : 모든 것을 다 맞추는데 관심 : 이 부분이 CE와의 큰 차이이다.

-f(x) = softmax(Wx+b) : w : 784 x 10 : b = 1 x 10

-loss function을 입력으로 받는 cost function을 만들고 session에서 그 cost function(optimizer)만 call해주면 됨.

-activation : 100 x 10 output에서 가장 큰 것들만 골라서 100 x 1 벡터를 만듬

YunjeongPARK1 commented 5 years ago
2019.7.8. 지금까지 읽은 논문들 요약 정리 **우울증 중 bipolar disorder에 초점을 맞추어서 진행하고 있음. 1.일반적인 방법 -data : phone call in and out : text massage in and out : voice feature (음성 분석, 내용 분석은 사생활 문제로 보통 제외) - jitter, pitch - openSMILE 오픈 소스 사용 : GPS : 위 데이터들과 (1)self reported mood score (2) HDMR, YMRS 등의 전문적인 정신 분석 평가 지표를 사용 : (1)은 간편하지만 주관적으로 편향이 있을 수 있고 : (2)는 전문 기관에 방문해서 해야한다는 점이 연구비도 없고 협력 기관도 없는 우리로서는 힘든 부분. analysis : 분석방법에 대해서는 구체적으로 살펴보지 못했으나, 목소리 분석에 있어서는 오픈 소스 머신러닝을 많이 쓰게 되고 (openSMILE), 다른 데이터들은 통계적인 방법을 사용하여 분석하는 듯. 인공지능을 적극적으로 사용하는 부분이 별로 없었다. (최근 논문을 보지 못해서 일 수도 있음) 그래서, 강의에서도 나온 것처럼 이 도메인의 방법론에 인공지능을 적절히 사용하여서 성능을 올릴 수 있는 방향으로 어플 개발 및 논문 작성을 하는 것이 좋을 것 같다. 2.인공지능과의 결합 deepmood 논문 : keypress와 accelerameter(핸드폰의 3차원 움직임) 데이터를 이용하였으며 RNN을 이용하여 분석. : 높은 정확도를 자랑. : 흥미로운 점은 정확도도 정확도이지만, 일반적으로 사용하는 데이터들을 이용하지 않았다는 점. : 일반적으로 사용하던 방법론과 인공지능의 결합을 우리 프로젝트의 목표로 삼을 수 있을 듯. : 구체적인 방법론은 아직 제대로 이해하지 못하여서 3. 이번 주 해야할 것 : 전반적인 부분에 대하여서는 조사가 어느정도 충분히 된 것 같은데, 최근 5개년 간 나온 새로운 방법에 대한 정리가 아직 되지 않은 것 같다. 최근 5개년 간 나온 우울증 모니터링 어플리케이션에 대해서 논문 조사하면 좋을 것 같다.
jwkwak45 commented 5 years ago

7/8 스터디

receptive field : 필터가 한번에 보는 영역

DropOut : 파라미터들이 동화되는 것을 방지?? 몇몇 노드가 과한 영향력을 지니는 것을 방지??

Semi-Supervised Learning 에서의 representation : 성능을 나타내는 지표. 주어진 데이터의 근간이 되는 전체 모델링을 잘하는게 representation을 잘하는 것.