인공지능 13

[On-Device AI] Systolic array 이해하기

안녕하세요. 오늘은 systolic array에 대해 알아보도록 하겠습니다. Systolic Array는 인공지능 연산의 핵심 연산인 행렬곱을 병렬로 파이프라이닝 하여 처리하며, 데이터 흐름을 최적화하여 계산 효율과 자원 활용도를 극대화합니다. 구글의 TPU를 포함한 여러 AI 하드웨어에서도 이 구조가 채택되며, CNN 연산의 하드웨어 가속화에서 중요한 역할을 하고 있습니다. 이번 포스트에서는 systolic array에서 어떻게 컨볼루션 연산 시 데이터를 처리하는지 간단한 예시와 함께 알아보도록 하겠습니다.  행렬 A와 B, 그리고 이 두 행렬의 곱은 위 수식과 같이 이루어지게 됩니다. 곱하고 더하는 과정이 반복되는 것을 확인할 수 있습니다. 위의 행렬곱과 같은 연산을 수행하는 2x2 시스톨릭 어레이입..

On-Device AI 2025.01.07

[논문 리뷰] Pruning Filters for Efficient ConvNets

안녕하세요 Pruning Filters for Efficient ConvNets 논문 리뷰 시작하겠습니다. 1. Abstract & Introduction∙ 다양한 application에서 활용되는 CNN은 큰 연산량과 저장공간이 동반된다∙ 최소한의 성능 감소로 convolution layer의 filter들을 pruning, 모델의 연산량을 줄일 수 있다∙ 모델을 압축하려는 시도는 많았으나 fully connected layer에서의 pruning은 유의미한 연산 시간의 차이를 만들지 못했다∙ VGG-16을 예로 들면 단 1%의 부동소수점 연산만이 fully connected layer에서 이루어진다∙ Filter pruning & retrain 전략으로 정확도를 크게 희생하지 않고도 연산량을 크게 줄..

논문 리뷰 2024.08.24

[딥러닝 컴퓨터비전] 컴퓨터의 이미지 표현법과 합성곱 신경망(CNN)을 활용한 이미지 분류기

(딥러닝에 대한 사전지식이 없으신 분들은 딥러닝 기초이론 편을 마치고 오시면 좋을것 같습니다!) 이번 포스팅에서는 컴퓨터가 이미지를 해석하는 방법과 합성곱 연산에 대해 알아보겠습니다.위 사진을 볼까요? 저는 이 사진을 보라색 장식의 모자를 쓴 여자정도로 표현할 수 있을 것 같은데요, 컴퓨터는 과연 이 사진을 어떻게 해석할 까요?  딥러닝 프레임워크 pytorch를 이용한 이미지 표현입니다. 512 x 512 의 RGB이미지가 각각 세 장이 겹쳐 있는 형태라고 볼 수 있겠네요.  컴퓨터는 각각의 RGB 이미지에 한 픽셀당 0~255의 정수값을 부여하여 해당 픽셀의 밝기를 조절하고, 이렇게 표현된 이미지 파일이 우리에게 보여지게 됩니다. 이제 위와 같은 컴퓨터의 이미지 해석법을 활용하여 이미지를 넣어주었을 ..

딥러닝 CV&LLM 2024.03.26

[딥러닝 기초이론6] 과적합(overfitting)과 로컬 미니멈(local minimum)

이번 포스팅에서는인공지능의 고질적 문제 세가지에 대해 다뤄보겠다. 세가지 문제점들은 다음과 같다. 1. 과적합(overfitting) 2. 로컬 미니멈(local minimum) 3. 사라지는 기울기(vanishing gradient) 과적합 문제는 다음과 같다. 그림과 같이 두개의 군집을 분류하는 기준선을 만드는 모델을 예시로 들면, 1번(파란 실선)은 일반적이지 않은 데이터까지 과도하게 학습하여 예측 성능에 영향을 미칠 수가 있다. 학습하지 못했던 새로운 데이터가 입력으로 들어왔을 때 잘못된 판단을 할 가능성이 높은 모델이다. 2번(주황 점선)은 적절하게 학습된 모델이라고 볼 수 있다. 일반적이지 않은 데이터가 예측모델에 반영되어있지 않음을 볼 수 있다. 3번(초록 실선)은 학습이 충분히 진행되지 않..

[딥러닝 기초이론5] 다중 분류(Multi-class classification)

이번 포스팅에서는 다중 분류, 즉 분해야 할 클래스의 개수가 3개 이상일 때의 예측 모델을 만드는 법에 대해 말해보겠다. 이전 포스팅을 떠올려보면, 마지막 출력층의 활성함수를 시그모이드 함수로 설정 + BCE 손실함수를 채택함으로써 이진 분류를 수행하는 모델을 만들었었다. 당시에 '피곤하다'는 1의 클래스를 부여하고, '피곤하지 않다'는 0의 클래스를 부여하여 이진 분류를 수행하였다. 그렇다면 분류할 클래스가 3개(사과,배,귤)인 예측 모델을 만들고 싶다면 어떻게 해야할까? 사과, 배, 귤을 각각 0,1,2 로 맵핑하면 될까? 그렇지 않다. 사과일 확률이 0.4, 배일 확률이 0.1, 귤일 확률이 0.5인 데이터가 들어왔을 때를 예로 들면, 0과 2사이인 1에 가까운 값이 최종 출력되어 해당 객체를 배라..

[딥러닝 기초이론4-1] 데이터의 특성 증가와 활성함수

지금까지는 데이터의 한가지 요소(수면 시간)를 보고 원하는 데이터(피로도)를 예측하는 모델을 만들었다. 하지만 고려해야 할 요소가 한가지가 아니라면 어떻게 해야할까? 고려사항이 추가된 문제를 선형회귀의 관점에서 살펴보겠다. 수면시간(h) 1 3 5 7 9 기온(°C) 30 29 28 24 25 피로도(%) 100 75 60 25 15 이 표를 보면, 기온이라는 요소가 추가되었다. 이제 이 데이터셋을 사용하여 수면시간과 기온 두가지 요소를 고려하여 피로도를 예측하는 모델을 만들어보려고 한다. 이 경우 그림과 같이 추가적으로 기온이 변수로 들어가서 선형연산에 포함된다. 행렬연산식을 보면 위와 같다. 이는 수면시간과 기온을 고려하여 피로도를 측정하는 예측 모델로, 3차원 공간 상에 그림과 같이 나타낼 수 있다..

[딥러닝 기초이론4] 로지스틱 회귀 (logistic regression)

지금까지 선형 회귀 분석을 통해 주어진 학습 데이터를 잘 대표하는 직선의 방정식을 찾고, 이를 이용해서 새로운 입력값에 대한 결과를 예측해보았다. 하지만 이번에는 조금 다른 문제를 다뤄보겠다. 주어진 입력에 대해서 예측이 그렇다 or 아니다 두가지 중 하나로 결정되는 문제이다. 수면시간에 따른 피로도를 예측하는 대신, 수면시간에 따라서 피곤하다 or 피곤하지 않다로 분류되는 경우이다. 수면시간(h) 1 3 5 7 9 피로도(%) 100 75 60 25 15 피곤한지 여부 O O O X X 1,3,5 시간 수면 후 피곤하다, 7,9시간 수면 후 피곤하지 않다는 데이터를 가지고 이진분류를 수행하는 예측 모델을 만들어보겠다. 피곤하다를 1로 맵핑하고 피곤하지 않다를 0으로 맵핑해서 좌표평면위에 표현하면 다음과..

[딥러닝 기초이론3-2] 미니 배치 학습(mini-batch learning)과 텐서(Tensor)

우리는 지금까지 적은 데이터들을 가지고 인공지능의 학습과정을 살펴보았지만, 실제로 인공지능을 학습시킬때는 굉장히 많은 데이터 쌍을 이용하게 되고, 그에 따라 처리해야하는 연산량이 증가하고 학습에 많은 시간이 소요된다. 선형 행렬 연산을 통해 배치 학습을 진행시켜 학습에 필요한 연산들을 효과적이고 빠르게 실행할 수 있다. 배치란, 일괄적으로 처리되는 집단이나 무리를 의미한다. 밑의 사진을 통해 배치학습을 이해해보자. 왼쪽이 기존의 계산방식이고, 오른쪽이 배치 학습을 적용한 학습방법이다. 왼쪽에서는 N개의 데이터 쌍으로 구성된 학습데이터 쌍에 대해서 N번의 반복계산을 거친다. 그러나 배치학습을 적용하면 한번의 선형 행렬 연산을 통해 계산 속도를 증가시킬 수 있다.(행렬 연산을 GPU상에서 하게 되면 훨씬 빠..

[딥러닝 기초이론3] 인간의 신경계를 모티브로 한 인공신경망

위 사진은 '딥러닝' 이라고 검색하면 가장 쉽게 볼 수 있는 이미지 중 하나이다. 이전 포스팅에서 인공지능이 어떻게 구현되는지를 설명했었는데, 그 계산 과정을 이러한 인공신경망으로 도식화 할 수 있다. 이 과정을 이해해보도록 하는 시간을 가져보도록 하겠다. 위 사진을 통해 사람의 뉴런이 신호를 전달하는 법을 알아보자. 먼저 자극을 받아들이는 부분이 존재하고 그 자극을 전달하는 부분이 존재한다. 그 후 다시 해당 자극을 다른 뉴런의 수상돌기로 보낸다. 이를 우리가 실습했던 수면시간에 따라 피로도를 계산하는 메커니즘과 접목시켜 보면 다음과 같이 도식화된다. x는 수면시간이고 y를 피로도라고 생각하면 실습에서 했던 내용과 같다는 것을 알 수 있다. 외부에서 들어오는 x는 데이터이다. 해당 데이터에 우리가 학습..

[딥러닝 기초이론2-1] 선형회귀 손실함수와 적절한 학습률 설정

[딥러닝 기초이론2] 에서 손실함수와 학습률(learning rate)에 대해 배워보았다. 이번 포스팅에서는 1. 선형회귀에서 MSE 손실함수가 자주 쓰이는 이유 2. 적절한 학습률(learning rate) 설정이 필요한 이유 이 두가지에 대해서 다뤄보겠다. 1. 선형회귀에서 MSE 손실함수가 자주 쓰이는 이유 1) 에러의 최댓값을 기준으로 하는 경우 이 경우는 특이 데이터가 있을 시 그 데이터에 편향된 예측모델이 나온다는 문제점이 있다. 2) 오차 제곱의 합이 아닌 오차들의 합으로 손실함수를 설정하는 경우 이 같은 경우 에러들간의 부호가 달라지게 된다. 실제값에서 예측치를 뺀 값이 error가 되는데, 부호가 다르기 때문에 서로 상쇄되어 오차의 크기를 대변할 수 없게 된다. 그렇다면 절댓값들의 합은 ..