본문 바로가기

반응형

프로그래밍

(21)
5주차. CNN: Principle and Architecture 지난 글에서 배운 convolution은 일종의 필터이다. 이번시간에는 Convolution의 priniciple과 architecture을 배울 것이다. cnn이 등장하게 된 이유를 살펴보자 2d 이미지에서 특정 물체를 인식하려면 어떻게해야할까? ann으로 이미지를 분석하기 위해서는 이미지를 행벡터로 변환해야한다. 다시 말해 28x28 크기의 이미지를 1x784의 크기로 변환해야한다. 하지만 2d 이미지는 공간정보가 있기 때문에 크기를 변환(flattening) 해버리면 공간 정보가 파괴된다. 또한 ann 방식으로는 너무 많은 파라미터(weight와 bias)를 찾아야하기 때문에 작업 시간이 오래걸린다. 이러한 이유로 ANN 방식으로 특정 물체를 인식하기는 어렵다 그래서 cnn이 등장했다. cnn은 이..
4주차. CNN : convolution CNN은 convolution neural network의 약자이다. 그렇다면 convolution은 무엇일까? convolution은 두 개의 신호가 있을 때 그 중 하나를 reverse하고 shift하여 서로 곱하고 더한 것을 의미한다. convolution과 비슷한 의미로 cross correlation이 있다. convolution과 다르게 reverse 과정을 생략한다. CNN에서는 convolution이 아니라 cross correlation을 사용하지만 convolution이라 부른다. 1차원 convolution의 계산은 다음과 같이한다. output의 크기는 W-w+1와 같다. convolution을 이미지에서도 사용할 수 있다. 이때 사용되는 것을 Filter(혹은 kernal)이라 부..
3주차. ANN : 실습(tensorflow) 실습에서 사용되는 데이터는 MNIST(미국 NIST에서 만든 데이터)라는 손글씨체 데이터이다. 손글씨가 있는 곳에만 그레이스케일로 28*28 Matrix=784pixel의 크기이다. Sequential과 Model sub classing방법으로 ANN을 구현할 것이다. Sequential이라는 방법은 직관적으로 이해하기 쉽고 Model sub classing은 복잡한 구성을 공부하기에 유리하다 ​ 다음은 이번 실습에서 사용되는 library들이다. 첫번째로 MNIST 데이터를 Load 해주고 normalize 해줄 것이다. ANN에 사용되는 데이터는 3가지로 나뉜다. training/validation/test ​ 그래서 train_validation_images의 개수가 몇 개인지 확인하고 그 중 80..
1. 데이터 선형대수 선형대수는 데이터 분석에 필요한 계산을 돕는 학문이다. 데이터를 분석하기 위해서는 수 많은 숫자로 이루어진 데이터를 다루어야한다. 대량의 데이터가 포함된 복잡한 계산 과정을 선형대수를 이용하여 간단한 수식으로 서술할 수 있다. ​ 데이터의 유형 선형대수에서는 다루는 데이터의 개수나 형태에 따라 스칼라, 벡터, 행렬, 텐서 4가지 유형으로 나누어진다. ​ 데이터의 유형을 벤치마크 데이터셋(benchmark dataset) 중 하나인 붓꽃 데이터셋(iris dataset)을 이용하여 설명할 것이다. 이 데이터는 통계학자 피셔(Fisher)의 연구 결과에서 나온 것이다. 붓꽃 150송이에 대해 꽃받침의 길이, 꽃받침의 폭, 꽃잎의 길이, 꽃잎의 폭을 각각 측정한 것이다. 스칼라 스칼라는 하나의 숫자로..
2주차. ANN Optimization 지난 강의에서는 perceptron과 mlp가 무엇인지에 대해 배웠따. ​ MLP는 weights를 우리가 결정하지 않고 데이터로 결정된다. 그리고 이것이 머신러닝의 장점이다. 그러면 최적화하는 방법은 무엇일까? 변수, 목적함수, 제약 결정 수학적 형식으로 변환 최적화된 방법 찾기 ​ 먼저 필요한 요소를 정의 해야한다. 가중치와 같은 변수, 시그모이드와 같은 목적함수, 그리고 변수 등을 정의해줘야 한다. 어떤 요소를 사용하는 냐에 따라 결과가 달라질 수 있기 때문에 ​ 그리고 수학적 형식으로 정의 해야한다. weights을 선형대수 형태로 해야하고 목적함수의 에러를 최소하게 정의한다. ​ 마지막으로 gradient descent를 이용하여 weights와 bias를 학습시킨다. ​ weights를 구하는..
1주차. ANN_from Perceptron to MLP Artifical Neural Network (ANN) ​ Perceptron은 인공지능의 알고리즘이다. Input layer와 Output Layer로 이루어져 있고 Output layer은 하나의 노드이다. Input과 Output layer을 연결하는 것을 weight(가중치)라고 부른다. 입력된 값들을 가중치와 곱해주고 그 값들을 activation function에 넣어 출력하는 과정이다. 그 과정을 아래와 같이 표현할 수 있다. 여기에서 bias는 값을 조정해주기 위해서 임의의 수를 더하는 것이다. Perceptron에서 activation function은 step function을 사용한다. step function의 특징은 양의 값을 넣어주면 +1, 음의 값을 넣어주면 -1이 반환되는 것..
5.matplotlib 그래프 영역 채우기 지난 글에서는 축의 범위를 설정하였다. ​ 이번 글에서는 그래프의 영역을 채울 것이다. ​ 그래프의 영역을 채우는 것은 고등학교 미적분 시간 때 적분의 의미를 이해하기 위해서 등장했었다. ​ 사용되는 함수는 총 3가지가 있다 -fill_between() : 수평 방향의 곡선 사이를 색칠 -fill_betweenx() : 수직 방향의 곡선 사이를 색칠 -fill() : 다각형 영역을 색칠 fill_between() 함수를 이용하여 수평 방향의 곡 사이를 색칠했다. x1[1:3]은 x1리스트를 인덱싱 한 것인데 x1의 첫 번째 값 부터 두 번째 값까지를 의미한다. ->(x1[1],y1[1]), (x1[2],y1[2]),(x1[1],0),(x1{2],0) 사이를 색칠 alpha는 색칠 영역의 투명도를 의미한다..
4. matplotlib 축 범위 지정 지난 글에서는 범례를 표현하는 방법에 대해 이야기했다. ​ 이번 글은 축의 범위를 설정할 것이다. ​ 첫 번째 글에서 다루었지만 이번 글에서 더 자세히 다뤄보자 ​ xlim(), ylim() 함수는 min 값과 max 값을 튜플 혹은 리스트 형태로 입력한다. 입력된 값이 없으면 데이터에 맞게 자동으로 설정된다. xlim(),ylim() 함수 보다는 axis()함수를 사용하는 것이 더 편하다 axis() 함수에 xmin, xmax, ymin,ymax를 리스트나 튜플 형식으로 입력한다. axis()함수안에 문자열을 입력하여 모양을 조정할 수도 있다. 들어갈 수 있는 문자열로 'scaled', 'square' 등이 있다. ​ 파이썬으로 데이터 시각화하기

반응형