심층학습

 

배경

 

  • 1980년대 깊은 신경망 아이디어 등장
  • 한계
    • 경사 소멸 문제 (gradient vanishing)
    • 작은 훈련집합(어려운 데이터 수집)
    • 과다한 연산과 시간 소요 (낮은 연산의 범용 컴퓨터, 값비싼 슈퍼컴퓨터) (심층학습을 받쳐주지 못하는 하드웨어)
  • 성공배경
    • 혁신적 알고리즘 등장
      • 합성곱 신경망 (Convolutional neural networks, CNN) 구조
      • 경사 소멸 문제 해결을 위한 ReLU 활성함수
      • 과잉적합을 방지하는데 효과적인 다양한 규제 기법
      • 층별 예비학습(pretraining) 기법 개발
    • 값싼 GPU 등장 (하드웨어 보안)
    • 학습 데이터 양과 질 향상

고전적 다층 퍼셉트론과의 비교

 

  • 전통적 다층 퍼셉트론
    • 은닉층은 특징 추출기
    • 얕은 구조 (제한적 특징 추출)이므로 가공하지 않은 획득한 원래 패턴을 그대로 입력하면 낮은 성능
    • 따라서 사람이 수작업 특징을 선택(feature selection)하거나 추출(feature extraction)하여 신경망에 입력
    •                               ↓학습집합
      패턴 -> 특징 추출 -> 분류 (얕은 신경망) -> 부류
  • 심층학습
    • 학습에 의해 자동적으로 데이터로부터 특징(data-driven features) 추출 <- 표현 학습representation learning
    • 특징 벡터를 인공 신경망의 입력으로 줌 <- 종단간 학습(end-to-end learning)
    •                  ↓학습집합
      패턴 -> 특징 + 분류 (얕은 신경망) -> 부류
    • 깊은 신경망의 구조와 동작은 Multi Layer Perceptron과 같다.

깊은 신경망 표현 학습(representation learning / 특징 학습 feature learning)

 

낮은 단계 은닉층은 선이나 모서리와 같은 간단한(저급) 특징 추출

높은 단계 은닉층은 추상적 형태(abstractive representation)의 복잡한(고급) 특징 추출

 


역사적 고찰

 

  •               퍼셉트론 -> 다층 퍼셉트론 -> 깊은 다층 퍼셉트론
    활성함수 : 계단 함수    시그모이드 함수   ReLU와 변형들
    목적함수 : MSE                MSE             교차 엔트로피 또는 로그우도
  • 합성곱 신경망(CNN)의 부상 -> 완전 연결을 부분 연결로 바꾸자! (깊은 다층 퍼셉트론의 파생형이라 할 수 있음)

 


왜 심층학습은 강력한가?

 

  • 전체 깊은 신경망을 동시에 최적화 (종단간 학습 end-to-end)
  • 깊이의 중요성
    • ex) 점선이 20개 노드를 가진 은닉층 하나 짜리 신경망이라고 하면
      실선은 각각 10개 노드를 가진 은닉층 두 개 신경망이라고 할 수 있다. 즉, 더 정교한 분할이 가능해진다.
  • 계층적 특징(hierarchical features)
    • 깊은 신경망에서는 층의 역할이 잘 구분됨
    • 그러나 얕은 신경망은 하나 또는 두 개의 은닉층이 여러 형태의 특징을 모두 담당
      (깊은 신경망은 은닉층 수가 많은 것. 얕고 넓은 신경망은 1~2개의 은닉층 내부에 굉장히 많은 노드가 있는 것)

컨볼루션 (합성곱) 신경망 Convolutional neural network, CNN

 

  • 구조
    • 컨볼루션층 (CONV)
      • 선형함수인 컨볼루션과 비선형 함수인 활성함수 조합
      • 학습에 의해 결정된 복수의 커널들 (혹은 필터들)에 대응되는 특징들 추출
        • 각 층의 입출력 특징 형상이 유지된다.(특징맵)
        • 영상의 공간 정보를 유지하며 공간적으로 인접한 정보의 특징을 효과적으로 인식
        • 각 커널(필터)은 파라미터를 공유함으로써 완전 연결 신경망 대비 학습 파라미터가 매우 적음
    • 풀링층 (POOL)
      • 컨볼루션의 얻어진 특징을 통계적으로 압축 (최근에는 쓰지 않음)
      • 특징을 요약하고 강화함
    • (CONV - RELU) - (CONV - RELU) - POOL - .... - FC
  • 활용 분야
    • 분류 (classification)
    • 검색 (retrieval)
      • 비슷한 사진 출력을 보여줌.
      • ex) 구글 검색엔진
    • 검출 (detection)
    • 분할 (segmentation)
      • 검출의 상위호환. 클래스를 픽셀 단위로 구분해준다.
  • DMLP(Deep Multi Layer Perceptron)와 CNN 비교
    • DMLP
      • 완전 연결(fully connection) 구조. 높은 복잡도
      • 학습이 매우 느리고 과잉적합 우려
    • CNN
      • 컨볼루션 연산을 이용한 부분연결 (희소 연결) 구조로 복잡도 크게 낮춤
        • 이미지이기 때문에 부분연결을 통해서도 성능이 좋을 수 있다.
        • 이미지에는 지역성이 있기 때문에. 가까운 픽셀끼리가 먼 픽셀끼리보다 특징적으로 유사할 것.
        • 지역성을 중첩해서 전체의 shape을 만들어 나간다.
      • 컨볼루션 연산은 좋은 특징 추출
      • 특징
        • 격자(grid) 구조 (영상, 음성 등)를 갖는 데이터에 적합
        • 수용장(receptive field)은 인간시각과 유사
        • 가변 크기 입력 처리 가능
          • 컨볼루션층에서 보폭을 조정하거나, 풀링층에서 커널이나 보폭을 조정해 특징 맵 크기 조절
      • 컨볼루션 신경망 예제 https://transcranial.github.io/keras-js/#/
 

Keras.js - Run Keras models in the browser

 

transcranial.github.io


컨볼루션층

 

컨볼루션은 해당하는 요소끼리 곱하고 결과를 모두 더하는 선형 연산이다.

연산은 다음과 같다.

위는 1차원 입력, 아래는 2차원 입력 식

u는 커널(kernel/필터 filter), z는 입력, s는 출력 (특징 맵 feature map)

 

컨볼루션 연산 그림 예)

 

https://leonardoaraujosantos.gitbook.io/artificial-inteligence/machine_learning/deep_learning/convolution

 

덧대기(Padding)

 

가장자리에 영상의 크기가 줄어드는 효과 방지 (각 층 입출력의 특징형상 유지)

 

편향(bias) 추가

 

커널에 편향 추가

 

가중치 공유(weight sharing / parameter sharing)(묶인 가중치)

 

모든 노드가 동일 커널 사용

즉, 가중치를 공유하므로 매개변수는 3개에 불과하다.

∴ 모델 복잡도가 크게 낮아진다.

 

다중 특징 맵 추출

 

커널의 값에 따라 커널이 추출하는 특징은 달라진다.

∵ 하나의 커널만 사용하면 너무 빈약한 특징이 추출

그래서 실제로는 수십~수백 개의 커널을 사용한다.

 

특징 학습

 

커널을 사람이 설계하지 않고, 학습으로 찾음

DMLP와 마찬가지로 오류 역전파로 커널 학습

 

병렬분산 구조

 

각 노드는 독립적으로 계산 가능하므로 병렬 구조

+ 노드는 깊은 층을 거치며 전체에 영향을 미치므로 분산 구조

 

큰 보폭(stride)에 의한 다운샘플링(down-sampling)

 

일반적으로 보폭이 k면, k개마다 하나씩 샘플링해 커널 적용

-> 2차원 영상의 경우 특징 맵이 1/k^2으로 작아짐

텐서 적용

 

3차원 이상 구조에도 적용 가능

이 때, 입력 차원이 3이면 (ex)RGB) 커널도 그에 맞춰서 3차원으로 결정이 된다.


풀링층

 

  • 풀링 연산 종류 (풀링 연산은 특징은 유지하되, 사이즈를 줄인다.) 
    • 최대 풀링 max pooling
      • 특징 값 중 가장 큰 값 추출
      • https://paperswithcode.com/method/max-pooling
    • 평균 풀링
      • 특징 값 평균을 내 추출
    • 가중치 평균 풀링
  • 풀링 연산 특성
    • 풀링은 상세 내용 요약 혹은 평균 등 통계적 대표성 추출
    • 매개변수가 없음
    • 특징 맵 수 그대로 유지 (깊이는 유지(차원). 가로 세로는 변화)
    • 연산 효율화 (연산 횟수, 연결 가중치 개수 줄임)
    • 작은 변화에 둔감 -> 물체 인식이나 영상 검색에 효과적

CNN의 전체 구조

 

  • 빌딩 블록(building block)
    • CNN은 빌딩 블록을 이어 붙여 깊은 구조로 확장
    • 전형적 빌딩블록 : CONV -> ReLU(활성함수) -> POOL
    • 다중 커널을 사용해 다중 특징 맵 추출
  • 컨볼루션 층 출력 크기와 매개변수 수
    • 입력 : W1*H1*D1 (width, height, depth)
    • K개 F*F 커널, 보폭 S, 덧대기 P
      • 출력 크기 : W2*H2*D2
                       W2 = (W1-F+2P)/S+1
                       H2 = (H1-F+2P)/S+1
                       D2 = K
      • 매개변수 수 :
                       커널마다 (F*F*D1)개 가중치와 1개 바이어스를 가짐.
                       따라서, 전체 매개변수 수는 (F*F*D1)K + K
      • 일반적으로 F=2, S=2 혹은 F=3, S=1 사용
    • 위 식을 실제 예제로 보면
      입력 크기 : 32*32*3
      10개의 5*5 커널 보폭 1, 덧대기 2
      • 출력 크기 : (32-5+2*2)/1+1=32 -> 32*32*10
        층의 매개변수 개수 : 5*5*3+1 = 76 (+1은 편향 추가) -> 76*10 = 760

 

CNN 시각화 예제 https://poloclub.github.io/cnn-explainer/

'AI > KDT 인공지능' 카테고리의 다른 글

[07/19] 12주차 강의 개요  (0) 2021.07.19
[06/28] 심층학습 기초2  (0) 2021.06.28
[06/23] 다층 퍼셉트론  (0) 2021.06.23
[06/22] 라이브 세션  (0) 2021.06.22
[06/21] 신경망의 기초  (0) 2021.06.21

퍼셉트론 : 선형 분류기의 한계

 

선형 분리가 불가능한 상황인 XOR 문제에서 75% 정확도의 한계를 보임

이를 보완하고자 1986년 Rumelhart, Hinton이 다층 퍼셉트론의 이론 정립, 신경망 재부활

 

핵심 아이디어

 

  • 은닉층을 둔다.
    • 은닉층을 통해 훨씬 유리한 새로운 특징 공간으로 변환한다.
  • 시그모이드 활성함수를 도입한다.
    • 선형 분리할 땐 step function이라는 활성 함수로 양극화를 시켜 결과를 도출해 냈는데 시그모이드 활성함수를 도입하여 결정값을 discrete한 값에서 continuous한 값(연속값)으로 만들어주었다.
  • 오류 역전파 알고리즘을 사용했다.
    • 다층 퍼셉트론은 여러 층이 순차적으로 이어진 구조이므로, 역방향으로 진행하며 한 번에 한 층씩 gradient를 계산하고 가중치를 갱신하는 방식의 오류 역전파 알고리즘을 사용한다.

핵심 아이디어 1 : 특징 공간 변환

 

퍼셉트론 2개를 사용하여 XOR 문제 해결

 

XOR는 다음과 같다.

 

{0, 0} = 0

{0, 1} = 1

{1, 0} = 1

{1, 1} = 0

 

퍼셉트론 두 개를 사용하면 다음과 같이 XOR을 잘 분리할 수 있다.

 

 

첫 번째 퍼셉트론과 두 번째 퍼셉트론이 모두 +1이면 값은 1,

그렇지 않으면 값은 0이 되도록 퍼셉트론을 설정하면 XOR 문제를 해결 가능하다.

 

이 때 사용한 퍼셉트론 2개를 병렬 결합하면 원래 공간 x=(x_1, x_2)^T를 새로운 특징 공간 z=(z_1, z_2)^T로 변환한다.

그러면 새로운 특징 공간 z에서 선형 분리가 가능하게 된다. 즉, 문제를 푸는데 훨씬 유리한 공간으로 바꿀 수 있고, 그 공간에서 또 다른 의미를 찾을 수 있다.

 

위 작업은 사람이 수작업 특징 학습(hand-craft features learning)을 수행한 것과 유사하다.

(ex)비슷한 것끼리 묶는 작업... 가령 색깔에 의해 분류할 수도 있고, 모양에 의해 분류할 수도 있다. 즉, 사람이 느끼는 가장 도드라진 특징으로 분류하는 작업을 특징 학습이라 할 수 있다.)

-> 표현 학습(샘플을 표현하는데 가장 뛰어난 특성과 이런 특성을 원본 데이터에서 추출하는 방법 https://broscoding.tistory.com/307)


다층 퍼셉트론의 용량

 

일반화해서, p개 퍼셉트론을 결합하면 p차원 공간으로 변환하게 된다. 단, 원 공간에서의 특징은 유지하되, 그 특징이 더 두드러지게끔 만든다.


핵심 아이디어 2 : 활성함수

 

계단함수는 딱딱한 의사결정 -> 영역을 점으로 변환

그 외 활성함수는 부드러운 의사결정 -> 영역을 영역으로 변환

  • logistic sigmoid
  • hyporbolic tangent sigmoid
  • softplus & rectifier Linear Unit(Relu)

 

 

시그모이드 함수

 

이진 시그모이드 함수 (범위 0 ~ 1)

양극 시그모이드 함수 (범위 -1 ~ 1)

그 외 다양한 활성함수

 

logistic sigmoid와 tanh는 α가 커질수록 계단함수에 가까워짐

모두 1차 도함수 계산이 빠름 (특히 ReLU는 비교 연산 한 번. 그래서 심층학습에 많이 쓰임.)

 

일반적으로 은닉층에서 logistic sigmoid를 활성 함수를 많이 사용.

-> 그러나 logistic sigmoid는 양 끝값이 0으로 수렴하게 되기 때문에 0*미분값을 전달해버리면 아무리 오류값, 미분값, 그 어느 값을 전달해도 0이 되어버린다. 즉, gradient vanish 문제가 발생하게 됨.

Courtesy of  https://www.desmos.com/calculator

∴ 깊은 신경망에서는 ReLU를 활용하여 grandient vanish 문제를 없앤다.


다층 퍼셉트론 구조

 

d+1개의 입력 노드 (이 때, d는 특징의 개수), c개의 출력 노드 (c는 부류 개수(정답 개수))

p개의 은닉 노드 (p는 하이퍼 매개변수=사용자가 정해주는 매개변수)

-> p가 너무 크면 과잉적합이 되고, 너무 작으면 과소적합이 된다. -> 하이퍼 매개변수를 최적화해야 한다!

(p가 더 특징을 추출하는 요소)

 

2층 퍼셉트론의 매개변수(가중치 행렬)

 

U^1 : 입력-은닉층 연결

U^2 : 은닉층-출력 연결


동작

 

결국 은닉층은 특징 벡터 x를 출력 벡터 o로 사상(mapping)하는 함수로 간주할 수 있다.

각 노드가 수행하는 연산을 구체적으로 쓰면

 

j번째 은닉 노드 연산

k번째 출력 노드 연산

2층 퍼셉트론 동작을 행렬로 표기

 

은닉층은 특징 벡터를 분류에 더 유리한 새로운 특징 공간으로 변환해준다.

현대 기계학습에서는 이를 특징학습(feature learning / data-driven features)이라 부름

 

특징이 두드러지는 부분은 은닉층을 거치면 거칠수록 더욱 두드러지게 됨.


구조

 

  • 범용적 근사 이론(universal approximation theorem)
    • 하나의 은닉층은 함수의 근사 표현
      -> 다층 퍼셉트론도 공간을 변환하는 근사 함수
  • 얕은 은닉층의 구조
    • 지수적으로 더 넓은 폭이 필요할 수 있음
    • 더 과잉적합 되기 싶다.
      -> 일반적으로 깊은 은닉층의 구조가 좋은 성능을 갖게 된다.
  • 지수의 표현(exponential representation)
    • 각 은닉층은 입력 공간을 어디서 접을지 지정
      -> 지수적으로 많은 선형적 영역 조각들(의미적으로 공간이 나눠지고, 더 심플하게 나눌 수 있을 것)
  • 성능 향상
    • 실제 레이어가 깊어지면 깊어질수록 test accuracy가 높아진다.

다층 퍼셉트론 시각화 - https://playground.tensorflow.org

 

Tensorflow — Neural Network Playground

Tinker with a real neural network right here in your browser.

playground.tensorflow.org


모델 성능 향상을 위한 경험의 중요성

 

  • 아키텍처
    • 은닉층과 은닉 노드의 개수
      • 은닉층과 은닉 노드를 늘리면 신경망의 용량은 커지지만, 추정할 매개변수가 많아지고 과잉적합의 가능성이 커진다.
        -> 현대 기계 학습은 복잡한 모델은 사용하되, 적절한 규제 기법(L1, L2)을 적용
  • 초깃값
    • 초깃값은 보통 난수를 생성하여 설정하는데, 값의 범위가 분포가 중요
  • 학습률
    • 처음부터 끝까지 같은 학습률을 사용하는 방식
    • 처음에는 큰 값으로 시작하고 점점 줄이는 적응적 방식
  • 활성함수
    • (초창기) logistic sigmoid, tanh
      -> 은닉층의 개수를 늘림에 따른 gradient vanish 문제 발생
    • 깊은 신경망에 ReLU 함수 사용

오류 역전파 알고리즘

 

훈련집합


목적함수

 

평균 제곱 오차(mean squared error, MSE)로 정의

 

온라인 모드와 배치모드가 큰 차이는 없다.

배치 모드는 데이터를 n개만큼 나눠 나눈 갯수만큼의 평균 제곱 오차를 더하는 것,

온라인 모드는 전부에 대한 평균 제곱 오차를 구하는 것.

요즘엔 대부분 배치 모드로 사용.


연쇄 법칙(Chain rule)의 구현

 

반복되는 부분식들(subexpressions)을 저장하거나 재연산 최소화

ex) 동적 프로그래밍(dynamic programming)

ex2 ) 경사도 계산을 위한 연산 그래프

 

f(w)라는 부분식이 반복됨

 

2층 퍼셉트론의 목적함수

 

Θ={U^1, U^2}

 

J(Θ) = ({U^1, U^2})의 최저점을 찾아주는 경사 하강법


오류 역전파 알고리즘

 

오류 역전파 출력의 오류를 역방향으로 전파해 경사도를 계산하는 알고리즘

반복되는 부분식들의 경사도의 지수적 폭발 혹은 사라짐을 피해야 한다.(그래서 심층 학습은 ReLU를 쓴다고 했다..)

 

우리가 원하는 것 = Downstream gradients 

우리에게 있는 것 = local gradient, Upstream gradient

 

Downstream gradients를 얻기 위하여 local gradient와 Upstream gradient를 계산하여 chain rule을 통해 두 gradient를 곱해주면 된다.

 

ex) 곱셈의 역전파

in_1 = x

in_2 = y

out = xy라고 가정하자.

그러면 backpropagation 과정이 당연하게 성립함을 알 수 있다.

 

ex2) 덧셈의 역전파같은 경우는

local gradient = 1이 되기 때문에 각 노드마다 output gradient만이 전달된다.

 

ex3) 전개(fanout)의 역전파 예

 

 

각 노드마다 chain rule을 적용시켜 구한 값을 전부 더한다.

즉, sum(backprop)이라고 생각하면 된다.

 

 

오류 역전파에 대해 잘 정리되어 있는 사이트 - https://velog.io/@kangtae/EECS-498-007-598-005-6.-Backpropagation

'AI > KDT 인공지능' 카테고리의 다른 글

[06/28] 심층학습 기초2  (0) 2021.06.28
[06/24] 심층학습 기초  (0) 2021.06.24
[06/22] 라이브 세션  (0) 2021.06.22
[06/21] 신경망의 기초  (0) 2021.06.21
[06/16] 인공지능과 기계학습  (0) 2021.06.16

under prediction을 주는 부분 고민

이를 어떻게 loss function (손실 함수) 안에 반영시킬 수 있을 것인가?

 

under prediction이라는 것에 대해 회고해보자.

 

t_i : target label

y_i : prediction

 

t_i > y_i일 때 under prediction이 되었다고 할 수 있을 것.

 

배달 시간 예측같은 경우는 예상 시간이 실제 배달 시간보다 더 걸리게 될 경우 소비자의 불만이 더 클 것. 그래서 더더욱 under prediction을 방지해야 함.

 

이를 잘 valancing할 수 있는 loss function을 만드는 것이 우리의 목표

 

loss function을 만들 때 가져야 하는 특징

 

t_i ≥ y_i -> (t_i - y_i)^2

t_i < y_i -> 1/2(t_i - y_i)^2

 

위의 두 가지 경우가 가능.

각각의 경우에 따라 다른 가중치를 가진 squared loss function으로 줄 수 있다.

이걸 하나의 식으로 표현하려면 다음과 같이 하면 된다.

 

tensorflow에서 기본적으로 주어진 squared error function을 확장시켜 custom한 loss function으로 바꾸는게 어렵지 않다.

keras api를 쓰면 간단해진다.


ML 커리어 종류

 

  • ML research scientist
    • 모델을 만드는 사람
  • ML research engineer
    • 시스템 운영, 구현 부분에 초점
  • Data scientist (analytics)
    • 유저들 행동 로그 등의 데이터 지표를 분석하는 직업으로 따로 구분해 부르기도 한다.
    • 크게는 머신러닝 엔지니어와 통합하여 쓰기도 함.

 

회사가 커지면 커질수록 분업이 생기게 된다.

 

ML 커리어 과정

 

  • Individual contributor (IC)
    • research scientist -> senior research scientist -> principle research scientist -> senior principle research scientist -> VP -> senior VP -> CTO 
  • Manager
    • manager(처음에 individual contributor로 join해서 일을 하다 manager로 선회하는 경우가 대부분) -> senior manager -> director -> senior director -> VP -> senior VP -> CEO

ML 취업

 

  • 과정
    • 온라인지원(linkedin), 인맥을 통한 referral, 리크루터로부터 연락
    • Phone screening (이력서랑 과거에 했던일이 일치하는지 확인)
    • On-site interview
    • Offer
  • Resume
    • 간결하게 impact 위주로, 부풀리지 말 것.
      • 강조한 부분에 대해 면접에서 집중 질문을 받기 때문에 실제로 안한 부분에선 굉장히 크게 minus될 수도 있다. 그렇기 때문에 내가 맡았던 부분이 정확히 어떤 부분이었는지에 대해 기입하는게 좋다.
  • 여러 군데 지원 시 유의점
    • 가장 가고 싶은 곳의 인터뷰 스케쥴을 먼저 잡을 것
    • 비슷한 시기에 오퍼를 받을 수 있다면 협상에 도움
  • 면접 관련 구성원들
    • Hiring manager 
      • 사람을 뽑으려는 팀의 팀장이 보통.
    • Recruiter
      • 인사팀장. 
      • position에 대해 자세히 알고있지 못하는 경우가 많다. 최대한 Hiring manager가 원하는 사람을 찾는 사람
    • Interviewers
      • 인터뷰하는 사람들. 보통 Hiring manager 같은 레벨에 있고 다른 팀인 사람 혹은 선임 혹은 팀의 팀원들로 구성
  • 면접 준비
    • 회사, 팀, 인터뷰어에 대한 사전조사 (경력이나 인터뷰어가 어떤 면접 질문을 하는지 알아둘 것)
      • 회사가 풀고 있는 문제에 대해 알고 있는 것이 중요.
    • 기본 재점검
    • 응용분야 지식 보완
    • 코딩
      • 코딩보단 ML 전문성을 더 보는 경우도 있고.. 팀바팀이다.
  • 면접
    • 코딩 (많으면 1명 절대 2명 이상은 안물어본다...)
    • ML 지식 (최소 1명 최대 2명..) (최신 연구결과보다 기초가 중요)
    • 시스템 디자인 (이 시스템을 어떻게 design할 것인지. 성공지표, 실험설계 등 포함)
      • 모델을 어떻게 측정할 것인지 - 성공지표(metric)을 어떤걸 써야 모델을 잘 만들 수 있을 지.
      • 어떤식으로 실험을 설계해야할지.. 모델을 launching했을 때 어떤 식으로 사용자들이 이것을 평가할 수 있게 user를 어떻게 묶을 것인지.. (나이? 성별? 직업?)
    • 과거 프로젝트 경험 (명확한 문제정의, 본인의 기여)
      • 이 문제가 얼마나 어려운 문제였고, 내가 얼마나 어려운 / 중요한 문제를 풀었는지
      • 이 안에서 내가 얼마나 기여를 했는지 명확하게 기억하는 게 중요.
    • 회사문화, 팀문화
      • 회사랑 팀이랑 어울리는가를 보는 면접관들이 한명정도 있을 수 있다.
      • 나의 경험이 내가 이런 사람이라는 걸 보여주는 상황을 설명해야 함. 그리고 내가 그 상황에서 어떤 action을 취했고, 이 action때문에 바뀌어진 결과에 대해서 말하기
  • 오퍼 받은 후
    • 시장조사 후 적절한 연봉협상할 것
      • 절대 바로 받지 말고 한 번 이상은 협상을 해봐야 한다!
        • 학교 졸업하고 바로 들어갈 땐 서툴러서 처음 제시된 걸 그대로 받을 뻔 했지만.. 소심하게 얘기했다가 살짝 올려줬다고 하신다..!
        • 여러 개의 offer가 있는 것이 확실하다. 하나만 있으면 올려달라고 말할 순 있지만 반영될 확률이 낮다. 그러나 두 개 이상있으면 두 개 사이에서 협상할 확률이 굉장히 높다.
        • 세 가지 요소
          • 매달 들어오는 월급
          • 매년 주식으로 받을 수 있는 금액(보통 한꺼번에 줌. 향후 3년, 4년동안 1/4씩 주기도 함)
          • 매년마다 받을 수 있는 보너스 (연봉의 20% 25% 회사마다 다름)
        • 회사의 상장 가능성도 볼 것. 상장 가능성이 보이면 base(월급)를 적게 받더라도 주식을 받으면 나중에 훨씬 이득을 볼 수 있을 것이다. 그게 아니고 stable한.. 변동이 심할 것 같지 않으면 base를 낮게 받는 것이 불리할 것....
      • 다수의 오퍼가 있다면 협상에 절대적으로 유리하다
      • Hiring manager, recruiter들과 좋은 관계 유지하기
  • 인턴은 쌍방으로 서로를 평가하는 것!

'AI > KDT 인공지능' 카테고리의 다른 글

[06/24] 심층학습 기초  (0) 2021.06.24
[06/23] 다층 퍼셉트론  (0) 2021.06.23
[06/21] 신경망의 기초  (0) 2021.06.21
[06/16] 인공지능과 기계학습  (0) 2021.06.16
[06/15] 분류문제 실습  (0) 2021.06.15

사람의 뉴런

 

  • 두뇌의 가장 작은 정보처리 단위
  • 구조
    • 세포체는 간단한 연산
    • 수상돌기는 신호 수신
    • 축삭은 처리 결과 전송
  • 사람은 10^11개 정도 뉴런을 가지며, 각 뉴런은 약 1000개 다른 뉴런과 연결돼 10^14개 연결을 갖는다.

 

컴퓨터가 사람 뇌의 정보처리를 모방해 지능적 행위를 할 수 있는 인공지능 도전

-> 뉴런의 동작 이해를 모방한 초기 인공 신경망(artificial neural network, ANN) 연구 시작

-> 퍼셉트론 고안

 

사람 신경망 인공 신경망
세포체 노드
수상돌기 입력
축삭 출력
시냅스 가중치

신경망의 종류

 

인공신경망은 다양한 모델이 존재

 

  • 전방(forward) 신경망과 순환(recurrent) 신경망
  • 얕은(shallow) 신경망과 깊은(deep) 신경망

 

결정론(deterministic) 신경망과 확률론적(stochastic) 신경망 비교

  • 결정론 신경망
    • 모델의 매개변수와 조건에 의해 출력이 완전히 결정되는 신경망
  • 확률론적 신경망
    • 고유의 임의성을 갖고 매개변수와 조건이 같더라도 다른 출력을 가지는 신경망

퍼셉트론

 

  • 구조 : 절(node), 가중치(weight), 층(layer)과 같은 새로운 개념의 구조 도입
  • 제시된 퍼셉트론 구조의 학습 알고리즘 제안
  • 원시적 신경망이나, 깊은 인공신경망을 포함한 현대 인공신경망의 토대
    • 깊은 인공신경망은 퍼셉트론의 병렬 배치를 순차적으로 구조로 결합함
  • 현대 인공신경망의 중요 구성 요소가 된다.

퍼셉트론의 구조

 

  • 입력
    • i번째 노드는 특징 벡터의 요소 x=(x_1,x_2,...,x_d)^T의 요소 x_i를 담당
    • 항상 1이 입력되는 편향(bias) 노드 포함
  • 입력과 출력 사이 연산하는 구조를 가진다.
    • i번째 입력 노드와 출력 노드를 연결하는 변(edge)는 가중치 w_i를 갖는다.
    • 퍼셉트론은 단일 층 구조라 간주.
  • 출력
    • 한 개의 노드에 의해 수치(+1 혹은 -1) 출력 -> 활성 함수를 step function을 사용할 때

퍼셉트론의 동작

 

  • 선형 연산 -> 비선형 연산
    • 선형 : 입력(특징)값과 가중치를 곱하고 모두 더해 s를 구함
    • 비선형 : 활성 함수 τ 적용
      • 활성함수로 계단함수를 사용하면 출력이 +1 또는 -1 출력
  • 수식
    • y= τ(s)
    • 이 때 s = sigma^d_(i=1)w_ix_i, τ(s)={1 (s≥0), -1 (s<0)}
  • 퍼셉트론의 동작을 식으로 작성하면 다음과 같다.
    • y = τ(w^Tx) (x는 엄밀히 따지면 d+1일 것이다. 여기서 +1은 편향 값.

퍼셉트론의 학습

 

  • 분류기 학습 과정
    1. 과업 정의와 분류 과정의 수학적 정의 (가설 설정)
    2. 해당 분류기의 목적함수 J(Θ) 정의
    3. J(Θ)를 최소화하는 Θ를찾기 위한 최적화 방법 수행
  • 목적함수 정의 (1단계 + 2단계)
    • 퍼셉트론의 매개변수를 w = (w_0, w_1, ..., w_d)^T라 표기하면, 매개변수 집합은 Θ={w} 표기
    • 목적함수를 J(Θ) 또는 J(w)로 표기
    • 퍼셉트론 목적함수 상세 조건
      • J(w)≥0이다.
      • w가 최적 즉, 모든 샘플을 맞히면 J(w)=0이다.
      • 틀리는 샘플이 많은 w일수록 J(w)는 큰 값을 갖는다.
  • 목적함수 상세 설계
    • Y는 w가 틀리는 샘플의 집합
    • 위 식은 세 가지 조건을 만족하므로 퍼셉트론 목적함수로 적합
      • 임의의 샘플 x_k가 Y에 속하면(오분류됐을 때) 퍼셉트론의 예측 값 w^Tx_k와 실제 값 y_k는 부호가 다르다 -> -y_k(w^Tx_k)는 항상 양수를 가짐 : 만족 (조건 1 만족)
      • Y가 공집합일 때 (퍼셉트론이 모든 샘플을 맞출 때) , J(w)=0 : 만족 (조건 2 만족)
      • Y가 클수록 (틀린 샘플이 많을수록) J(w)는 큰 값을 가짐 : 만족 (조건 3 만족)
  • 경사하강법gradient descent
    • 최소 J(Θ) 기울기를 이용해 반복 탐색하여 극값을 찾는다.
    • 경사도 계산
      • 일반화된 가중치 갱신 규칙 Θ=Θg를 적용하려면 경사도 g가 필요
      • J(w)를 편미분하면
      • 델타 규칙 (퍼셉트론 학습 방법)
  • 퍼셉트론 학습 알고리즘 (확률론적stochastic 형태)
    1. 난수를 생성하여 초기해 w 설정
    2. repeat
    3.     Χ의 샘플 순서를 섞는다.
    4.     quit = ture
    5.     for j = 1 to n
    6.         y = τ(w^Tx_j)
    7.         if(y≠y_j)
    8.             quit = false
    9.             for i = 0 to d
    10.                 w_i = w_i + ρy_jx_ji
    11. until(quit)
    12. what = w
  • 퍼셉트론 학습 알고리즘 (무리batch 형태)
    1. 난수를 생성해 초기해 w 설정
    2. repeat
    3.     Y = 0 // 틀린 샘플 집합
    4.     for j = 1 to n
    5.         y = τ(w^Tx_j)
    6.         if(y≠y_j) Y = Y∪x_j
    7.     if(Y≠0)
    8.         for i=0 to d
    9.             w_i = w_i + ρ(sigma(y_kx_ki)_x_k)
    10. until (Y=0)
    11. what = w

 

 

 

 

'AI > KDT 인공지능' 카테고리의 다른 글

[06/23] 다층 퍼셉트론  (0) 2021.06.23
[06/22] 라이브 세션  (0) 2021.06.22
[06/16] 인공지능과 기계학습  (0) 2021.06.16
[06/15] 분류문제 실습  (0) 2021.06.15
오토인코더, t-SNE  (0) 2021.06.14

+ Recent posts