퍼셉트론(Perceptron)은 여러 개의 신호를 받아 하나의 신호로 출력하는 간단한 알고리즘입니다.

예로 들어, 누군가 당신을 때릴 때 어디를 맞느냐에 따라 소리가 나올 수도 있고 나오지 않을 수도 있습니다.

맞는 부위가 여러 개라면 (여러 개의 입력 신호), "악!" 소리가 나는 것 (0:소리 안남, 1:"악!") 을 출력신호로 이해할 수 있습니다. 퍼셉트론은 이러한 개념을 기반으로 설계되며, 다음과 같은 수식으로 표현할 수 있습니다.

 

퍼셉트론의 구조

아래 그림은 퍼셉트론의 구조를 나타냅니다.

  • x1: 입력 신호
  • w1: 가중치
  • θ : 편향 (Threshold)

 

퍼셉트론의 출력 는 다음의 식으로 계산됩니다.

 

입력 신호에 가중치를 곱해 모두 더한 값이 편향 θ보다 크면 y=을 출력하고, 그렇지 않으면 y을 출력합니다.

 

 

 

퍼셉트론으로 논리 회로 구현하기

퍼셉트론을 활용하면 간단한 논리 회로를 설계할 수 있습니다.
예를 들어 AND 게이트를 구현해보겠습니다.

 

AND 게이트란?

AND 게이트는 입력 신호 x1x2모두 1일 때만 출력이 1이 되는 논리 회로입니다.
다음은 AND 게이트의 진리표입니다.

x1 x2 y
0 0 0
0 1 0
1 0 0
1 1 1

 

AND 게이트 구현

위의 퍼셉트론 식을 기반으로 가중치 w1와 편향 θ를 설정하면 AND 게이트를 구현할 수 있습니다.
예를 들어, 다음과 같은 값을 설정해봅시다.

  • w1=0.5
  • w2=0.5
  • θ=0.6

이 경우, 입력 신호를 계산해보면 다음과 같은 결과가 나옵니다:

  • w1x1 + w2x2 ≤ θ일 때 y = 0
  • w1x1 + w2x2일 때 y =

따라서 x1x2가 모두 1일 때만 출력 신호 y가 1이 되어 AND 게이트의 조건을 만족합니다.

OR/NAND 게이트도 구현 가능

마찬가지로, 가중치와 편향 값을 조정하여 OR 게이트NAND 게이트도 설계할 수 있습니다.

 

 

결론

퍼셉트론은 단순하지만 강력한 알고리즘으로, 논리 회로를 구현할 수 있는 기본적인 도구입니다.
오늘날 딥러닝의 근간이 되는 신경망 모델도 퍼셉트론의 아이디어에서 시작되었다고 볼 수 있습니다.

 

딥러닝 관련 공부를 하다보면 epoch, batch, iteration이란 용어가 사용됩니다.

 

해당 용어를 이번에 다시 정리하고 이해하려고 합니다.

 

Epoch

인공 신경망에서 하나의 데이터 셋에 대해 학습한 횟수 

예를 들어 128 epoch 이란 것은 설정된 데이터 셋에 대해서 128번 반복하여 학습을 진행한다는 것이죠

※한번의 학습 = "forward & backward 를 한번 한다"

 

하지만, 너무 많은 학습은 overfitting(과적합)이 발생하고, 너무 적게 하면 과소적합(underfitting)이 발생합니다.

즉, 적절한 횟수의 epoch을 설정해야 좋은 weigth의 모델을 생성할 수 있죠. 

 

출처 :  https://www.geeksforgeeks.org/underfitting-and-overfitting-in-machine-learning/

 

batch size

 

배치 사이즈란 일반적으로 데이터 셋을 해당 사이즈로 쪼개서 학습한다는 의미 입니다. 

즉 데이터 셋안에 100개의 데이터가 들어있다고 한다면 10 batch size는 해당 데이터를 10개로 쪼개서 학습한다라고 이해하시면됩니다. 

 

iteration

 

메모리의 한계와 속도 저하로 인해 효과적으로 학습하기위해서 1epoch에서 모든 데이터를 한번에 집어넣을 수 없습니다. 따라서 1epoch에서 데이터를 쪼개서 학습을 시켜주게 되는데, 1iteration은 batch size만큼 1번 넣어줄 때를 말합니다.

 

 

정리를 해보면 

500개의 데이터가 있고, 아래와 같이 셋팅이 되어있다면,

- epoch : 20

- batch size : 50

 

1epoch에는 50의 batch size로 나눠진 데이터가 10번 들어가게 됩니다. iteration은 10이 되겠죠.

총 학습 횟수는 20번, iteration은 200번이 되게 됩니다. 

 

 

reference

https://m.blog.naver.com/qbxlvnf11/221449297033

 

머신 러닝 - epoch, batch size, iteration의 의미

- 출처 이번 포스팅의 주제는 텐서플로우나 케라스 등을 사용해서 모델을 만들어 보았으면 다들 아실 용어...

blog.naver.com

https://www.geeksforgeeks.org/underfitting-and-overfitting-in-machine-learning/

 머신러닝과 딥러닝에 대해 학습하던 중 Annotation이라는 단어가 자주 사용되어 정리를 하게 되었다. 

 

 

 

1) Annotation이란?


 사전적 정의로는 "주석"이라고 한다. 국어사전에는 다음과 같이 정리되어 있다.

 

  •  낱말이나 문장의 뜻을 쉽게 풀이함. 또는 그런 글

 프로그래밍 용어 또는 Data 측면에서 Annotation도 유사한 의미로 사용되지만, 좀 더 직관적으로 설명하자면 프로그래밍 언어에서는 코드에 대한 설명을 하기 위해 //(주석처리)를 사용하는 것이다. <그림 1>

 

&amp;amp;amp;lt;그림 1&amp;amp;amp;gt; 프로그래밍언어(C언어)에서의 주석처리

 

 그리고 Data측면 에서는 데이터에 대한 설명을 위해 Labeling을 하는 것이라고 보면 된다. Labeling이란 <그림 2>와 같이 이미지에서 객체 인식 시에 객체의 정보 즉, 메타데이터를 추가해 주는 것이라고 보면 된다. 

(Bounding_Box 위치값에 대한 라벨(Car, Person...) 표기) 

&amp;amp;amp;lt;그림 2&amp;amp;amp;gt; Data Labeling

 Annotation을 통해 상대방(프로그래머, 머신러닝 모델)이 코드나 데이터에 대해 쉽게 이해할 수 있게 만들어 주는 역할을 한다. 

 

 

 

2) Data Annotation의 종류


 Data의 측면에서 Annotation은 탐지하려는 객체를 표기하는 방식에 따라 구분지을 수 있다. 누끼 따는 것과 비슷하다.

 

① Bounding Box

 바운딩 박스는 object detection에서 가장 흔히 쓰이는 방법으로, 탐지하려는 객체에 타이트 하게 박스표기를 하고 해당 객체의 class를 구분해주는 방식이다. 대각선의 포인트를 잡아주면 되기 때문에 가장 쉽지만 데이터의 디테일이 그만큼 떨어진다.

 

 

② Polygon

 폴리곤은 의미 그대로 다각형이다. detection하려는 객체를 다각형으로 표기해준다. 레이블링(=어노테이션)에서 자세하고 디테일할수록 그만큼 좋은 데이터가 될 수 있지만, 그만큼 노동력이 많이 들어가게 된다. 

 

 

③ Point

 포인트는 이미지에서 찾으려는 객체에 대해 점을 찍어 표기하는 방식으로 점만 찍으면 됨으로 매우 쉽다. 하지만 그만큼 특징을 뽑아내는데 한정적이기 때문에, 정확하게 해당하는 데이터를 찍어주는 것이 중요하다. 찾으려고 하는 객체의 특성이 뚜렷한 경우에 효과가 좋고 이미지 안에서 객체의 수를 셀 때 유용하다. 

 

 

④Keypoint

  키포인트는 탐지하려는 객체의 모양을 알고싶을 때 데이터의 외곽선을 따줌으로써 폴리곤과 포인트 정보를 만들어 특징을 갖게 만드는 것이다. 추가적으로 포인트의 순서와 개수도 매타 데이터에 포함되기 때문에 동일 객체에 대해서는 같은 포인트를 갖는 것이 좋다.

 

 

⑤Polyline

 폴리라인은 많은 점으로 선을 그어 표기한다. 도로선 같이 시작과 끝이 없는 선을 구분할 때 사용하기 좋은 라벨링으로써 그 모양 자체로 특성을 가질 때 해당 데이터를 주로 사용한다. 예시와 같이 주로 차량 ADAS에서 자율주행을 위해 사용된다. 

 

 

⑥Cuboid

 큐보이드는 말 그대로 정육면체이다. 기존에 Bounding Box가 2차원으로 데이터를 형성하는 것이었다면, 차원을 하나 더 높여서 3차원의 데이터로 더 많은 정보를 제공할 수 있다. 자율주행 시스템에서 차량의 앞뒤 좌우를 표기하는데 매우 유용하고, 좋은 메타데이터가 많을수록 네트워크의 성능은 좋아질 수밖에 없다. 

 

 

 

 데이터 형식을 알고있으면, 추후 네트워크 목적에 따라 적절한 데이터 형식(Labeling, annotation)을 선정하는데 많은 도움이 될 것이다.  

 

 

 

*Reference 

- 네이버 지식백과 : https://terms.naver.com/entry.naver?docId=6470969&cid=42346&categoryId=42346

- 네이버 국어사전 : https://ko.dict.naver.com/#/entry/koko/e0f2adbb720242d488c38e79ad7c96b9

- https://humansintheloop.org/types-of-image-annotation/

 

 

부족하지만 읽어주셔서 감사합니다. 

 직장에서 업무를 진행하던 중, 우연찮은 기회가 닿아 머신러닝/딥러닝 관련 TFT에 들어가게 되었다. 평소 관심은 있었지만 깊이 있는 공부가 부족했고 대화하는데 자꾸 귀에서 걸리는 단어들이 많아 이참에 하나씩 정리를 해보려 한다. 

 

 첫 번째로 정리해볼 단어는 Precision, Recall 그리고 Accuracy이다. 흔히 말하는 머신러닝/딥러닝 모델 활용 시 평가를 위해 사용하는 단어로 Pattern recognition이나 Classification에서 사용된다.

 본격적으로 Precision, Recall 그리고 Accuracy에 대해 이해하기 전에 간단한 예시를 들고 가려고 한다. 동전의 앞면과 뒷면을 구분하는 인공지능 모델이 있다고 할 때, 인공지능 모델이 내놓은 답에 대해서 총 4가지로 구분 지을 수 있다.

 

- 첫번째 : 실제 앞면인데 인공지능도 앞면(Positive)이라고 답했을 때 = True Positive

- 두번째 : 실제 뒷면인데 인공지능은 앞면(Positive)이라고 답했을 때 = False Positive

- 세번째 : 실제 앞면인데 인공지능은 뒷면(Negative)이라고 답했을 때 = False Negative

- 네번째 : 실제 뒷면인데 인공지능도 뒷면(Negative)이라고 답했을 때 = True Negative

 

※ 실제 값(Ground True)과 모델의 결과값이 일치하면 True, 불일치하면 False
※ 모델의 결과값이 긍정이면 Positive, 부정이면 Negative로 이해하면 좀 더 편할 것이다.

 

 

 

1) Precision(정확성)


 그렇다면 위의 TP/FP/FN/TN에서 Precision은 어떤 부분에 해당할까?

의미로 보면 모델이 앞면이라고 답한 것들 중에서 실제 앞면인 경우의 비율이다.

즉, Positive로 답한 것 중 실제 True Positive의 비율

 

                  TP (긍정 중에서 실제 정답)

Precision = -------

               TP+FP (긍정으로 답한 모든 것)

 

Precision이 높을수록 모델이 갖는 정확성은 높으나, 해당 모델이 놓친 부분 (Negative)에서도 실제 앞면이 많을 경우 좋은 모델이라 표현하기 어렵다. 따라서 Recall이라는 항목도 함께 살펴보아야 한다.

 

 

 

2) Recall(재현율)


 Recall의 의미는 실제 앞면 중에서 모델이 앞면이라고 예측한 경우의 비율이다. 

즉, True 중에서 모델의 True Positive의 비율

 

              TP (긍정 중에서 실제 정답)

Recall = -------

            TP+FN (실제 정답=Ground Truth)

 

따라서, 대부분의 분류 모델에서는 모델의 성능을 측정하기 위해 Precision과 Recall을 지표로 사용한다. 

 

 

 

3) Accuracy


 Accuracy는 주어진 모든 데이터에서(모든 앞면과 뒷면) 모델이 앞면, 뒷면임을 맞춘 것(=TP+TN)의 비율이다.

 

                TP+TN (모델이 실제로 맞춘 모든 데이터)

Accuracy = -------

                TP+FN+FP+TN (모든 데이터)

 

이는 Precision과 Recall 모두 TP에 대해 다루는 한계에 비해 Accuracy에서는 TN( 뒷면을 뒷면이라고 예측)에 대한 부분까지 고려하게 됩니다. 

 

 

 

 

*Reference

- 나무 위키(Precision & Recall) https://en.wikipedia.org/wiki/Precision_and_recall

 

 

부족한 글 읽어주셔서 감사합니다.

 

 

+ Recent posts