4 minute read

Perceptron

  • 곱셈과 덧셈을 할 수 있는 ALU로 벡터의 내적을 한다. 텐서 코어가 4 by 4 연산을 할 수 있다.
  • 내부적인 데이터 패스는 비슷하지만
  • 범용의 명령을 수행할 수 있는 프로세서가 아니라 딥러닝과 관련된 연산만을 할 수 있는 것이다. 행렬 등의 연산에 특화되어 있다.
  • RISC-V를 집적해서 만든 CNN 가속기…
  • 내적의 실체는 어떤 값을 곱한 다음에 더하는 것이다. Convolatinoal neural network
  • 알고리즘적으로 단순해 보이는 것이 어떻게 좋은 성능을 낼 수 있을까?
  • 사람이 feature을 정하고 …. 2010년대까지의 접근
  • Deep Learning은 feature를 정하지 않는다. Feature extraction 자체를 학습한다. 각각에 레이어에 있는 weight들이 학습된다.
  • weight 값이 바뀌면서 확정되면 올바른 feature가 정해진다.
  • 그렇게 얻어진 고차원 feature를 가지고 분류를 한다.(분류기)
  • 앞에서 feature를 학습하는 데 쓰이고, 뒤에서 multi way perceptron만큼 대상을 class로 분류한다.
  • cnn을 설계할 때 lay를 정해야 한다.

Face Recognition using DNN

  • 고차원 필터(weight들의 묶음)를 이용해서 다음의 뉴런 값을 결정한다.
  • 다음 뉴런에 대해서도 동일한 필터의 값을 곱한다.
  • 이전에 있는 모든 레이어의 뉴런 값과 관련이 있다.
  • weight 값이 동일하다.
  • 레이어를 새롭게 만들고 있다. 한 점을 새롭게 계산해야 한다. 픽셀 하나.
  • 픽셀 값을 정할 때 이전 레이어를 거쳐야 다음 레이어로 갈 수 있다.
  • 하나의 필터 값으로부터 레이어의 뉴런 값이 결정된다.

CNN

  • multilayer(MLP)에 반해 CNN의 특징은 Partially-connected, Common weights
  • 공통된 필터를 사용한다.
  • 필터를 사용하는 CNN
  • MLP와 CNN(congruential nearul network) 중 어떤 게 메모리를 많이 쓸까? -> mlp
  • 계산량이 훨신 많다.
  • 필터의 개수가 수십 ~ 수백, 1024개까지 있는 것도 있다.
  • 레이어를 거치면서 필터의 개수가 많아진다.
  • 어떤 이미지를 줬을 때 내적을 해서 얻은 뉴런 값들이 feature를 추출하여 방향성 갖는 edge를 뽑는다.
  • 코나 눈이나 edge로 이루어져있기 때문에…
  • CNN은 학부 저학년부터 해야 한다. 올해 처음으로 2학년 수업에 강조하고 있다. 알고리즘을 이해하고 설계하는 것이 굉장히 중요해서 강조하는 것이다.
  • RGB 세 채널이 있다.
  • feature의 실체는 실수값으로 표현된 벡터다.
  • ChatGPT의 실체는 word embeding을 한 것이다. 단어를 정량적으로 표현한다. 서울, 학교, 대구 등을 어떤 값으로 표현하고 학습을 시킨 것이다. 서울과 대구는 비슷 쪽에 있고 학교는 다른 쪽에 있을 것이다. 서울과 뉴옥이 각각 나라에서 차지하는 위상이 비슷하다고 한다면 계산이 가능하다. 어떤 것을 찾았을 때 뉴옥이 나올 수 있다. word track이라는 알고리즘으로 만들어졌다.
  • 어떤 것을 뽑고 feature(vector)로 만들어서 classification을 하는 것이다. feature는 몇 차원 벡터를 의미한다.
  • 자연어 처리는 앞에서 벡터를 만들고 단어와 단어의 관계를 이해한 후 처리한다. 순차적이다. 반면에 이미지는 순차적이지 않다.
  • mlp의 첫 입력값은 벡터다.
  • averaging : 내용을 줄이는 것이다.
  • 중류에 따라 50개의 레이어에서 150개의 레이어가 많이 사용된다.
  • 1000개의 레이어를 하면 어떨까? -> 더 좋아지지 않더라. 150개의 레이어를 넘어가는 경우가 많지 않다.
  • 자연어 처리에서는 Transformer를 사용한다.
  • 여러 layer를 쌓았을 때 인식성이 좋아진다.
  • 왜 transformer가 더 좋을까?
  • 라바라는 것이 opensource가 되었다. 학습시키는 데 쓰이는 자원이 엄청나기 때문에 많이 정보가 감춰졌다. game change
  • google이 검색의 왕이 20년 동안 유지했지만 bing을 통해 검색해보면 더 낫다는 것을 알 수 있다.
  • 이름만 open ai다. ms의 투자를 받았다. 구글이 바드를 만들었지만 후발주자가 되었다. 학부에서 배우는 것을 통해 어디까지 있는지 확인하고 재밌어서 보이는 정보를 스스로 찾아라.
  • 동일한 input feature map
  • 9개의 product를 하나로 누적하는 것…
  • cpu는 내적을 하나씩 하지만 gpu는 동시에 진행된다.
  • 병렬 처리…
  • C 값은 점점 증가한다.
  • Filter가 n개 있다고 하자.
  • 2번째 filter는 output의 2번째 channel에 해당된다. filter가 output channel로 들어간다.

CNN Computation

  • innput feature map:
  • Output channel들의 plain은 독립적이다.
  • train data set이 있어야 한다.
  • CNN의 연산량이 깔끔하게 된다.
  • convolution algorithm으로 가속을 할 수 있다.
  • 한 레이어의 입력이 완성되어야 다음 레이어가 학습될 수 있다.
  • 등록된 사람인지 회부인인지 구분할 수 있디.
  • 새로운 필터마다 동일한 입력에 대해 계산하는 것이 맞다.
  • Q. M 자원의 channel을 가지는 filter의 연산은 병렬적으로 동시에 수행될 수 있는가? - > ㅇ
  • 인접한 두 뉴런들의 집합을 레이어라고 하는 것이 맞다.
  • CNN은 DNN에 속하는 것이다. DNN 안에 mlp도 있고 CNN도 있다.
  • mlp만을 이용하는 게 아니라 CNN도 이용한다.
  • Q. 7layer에서 반복문의 N M F E는 각각 어떤 의미인지 궁금하다.
  • 하나의 congrution layer에서 수행되는 연산의 실체다. 이 연산이 하나의 레이어에서 이루어진다.
  • Q. 과적합..
  • CNN 구조를 물어볼 것이다.

Chapter 4

Carry lookahead logic

  • Gi = Ai Bi
  • Pi = Ai xor Bi
  • Si = Ai xor Bi xor Ci = Pi xor Ci
  • Ci + 1 = Ai Bi + Ci (Ai xor Bi) = Gi + Ci Pi

  • C1 = G0 + P0 C0
  • C2 = G1 + P1 C1 = G1 + P1 G0 + P1 P0 C0
  • C3 = G2 + P2 C2 = G2 + P2 G1 + P2 P1 G0 + P2 P1 P0 C0
  • C4 = G3 + P3 C3 = G3 + P3 G2 + P3 P2 G1 + P3 P2 P1 G0 + P3 P2 P1 P0 C0

  • Ci+1 = Gi + Ci Pi

  • 14개의 gate를 쓴다.
  • carry lookabead adder 3만큼의 gate delay가 지난 후에 4비트 연산이 생긴다.
  • ripple carry adder: 8 gate delay가 발생한다.
  • carry lookahead adder는 ripple carry adder보다 3 gate delay만큼 절약할 수 있다.
  • Q. carry lookahead adder는 최적화를 하지 않는 것인가?
  • Q. 왜 for문이 7개? -> outro look이 포함되면 7개 없으면 6개
  • gate delay 계산하는 문제가 출제될 것이다.
  • C1@3 -> 최적화하면 2가 된다. 어짜피 나머지가 3이어서 최적화를 하지 않은 것이다.

CLA

  • Gi @1
  • Pi @ 1
  • G’과 P’을 정의한 이유는 C1’ =
  • G’ = G3+ P3 G2 + … -> 3
  • P’ = P3 P2 P1 P0 -> 2
  • 입력의 Max 시간 값 + gate delay 시간 1
  • timing 분석
  • Carry lookahead unit
  • C1’ = G0’(@3) + P0’(@1) C0(@0)’ = G3 + P3 G2 + P3 P2 G1 + P3 P2 P1 P0 G0 + P3 P2 P1 P0 G0 = C4 (@4) -> 이거 알면 다 끝난 것이다.
  • 기능적으로 증명하고 timing적으로 고려하면 끝난다.
  • C2 = G1 + P1 C1 = G1 + P1 (G1 + P0 C0) = G1(@3) + P1(@2) G1(@3) + P1(@2) P0(@2) C0(@0) = @4 (각 프라임 생략)
  • G3 = G2 + P2 C2 = G2 + P2 G1 = … @5

cont’d

  • 0으로 들어가는 것은 4 8 12가 들어가기도 한다.
  • 만약 4였다고 하자.
  • 프라임이 있는 것과 없는 것은 어떤 차이가 있을까
  • 각각의 adder를 바로 계산하기 위한 G’ P’을 고안했다.
  • 기능적으로 동일하다는 것을 알면 timing 분석은 노테이션을 할 줄 안다면 쉽게 할 수 있다.
  • 표에 나오는 타이밍을 도출할 수 있어야 한다.
  • carry lookahead를 하나 더 할 수도 있다.

Tags:

Categories: ,

Updated: