인공지능 응용 공학 51

Colab에서 CNN을 사용한 Keras MNIST 코드 작성

Colab에서 Untitled0.ipynb를 연 후 kerascnnmnist.ipynb 로 파일명을 부여한 후 저장하자. tensorflow를 호출하여 약어 tf 로 정의하고 버전을 출력해 보자. 아래 코드를 Colabs에서 실행하기 전에 반드시 런타임 유형 변경에서 반드시 하드웨어 가속기 GPU를 설정하도록 하자. 그러히치 않으면 실행은 가능하지만 10배 가량의 상당한 연산 시간이 소요됨에 유의하자. tensorflow.keras를 상속하는 datasets, layers, modles, losses 라이브러리를 선언한다. 이들은 tensorflow.keras에서 제공하는 메서드(method)들이다. 이 선언을 사용하면 tf.keras.layers.⦁⦁⦁를 간단하게 layers.⦁⦁⦁로 쓸 수 있는 장점..

인공지능 응용 공학 Image Classification

1998년 LeNet-5 발명 이후로 10 여년간 MNIST에 관한 알고리듬 벤치마킹이 활발히 이루어진 이후 20212년 스탠포드 대학에서 주최한 ILSVRC 컨퍼런스에서 AlexNet 이 우승한 이후 CNN을 기반으로 하는 Image Classification 분야가 급속히 발전하였다. LeNet 에 있어서 인식(지)의 목표는 이미지에 포함된 하나의 객체 즉 숫자가 무엇인지 알아내는 비교적 간단한 문제였지만 AlexNet 이후로부터는 이미지에 포함된 여러 이미지들이 각각 무엇인가를 인식하는 인간과 거의 비슷한 인식능력을 시험하는 단계로 발전하였다. 32X32 수기문자 이미지는 1024 비트 즉 1K 비트급 이미지로서 일 단계 Convolution 처리 과정의 첫 번째 Convolution 에서 6개의 ..

구글 Colab에서 TensorFlow 버전 2.92를 사용한 MNIST 예제

텐서플로우는 2.x 버전에서는 초기의 1.x 버전에서 사용했던 그래프 파트와 실행 파트의 명확한 구분이 없어지고 일반적인 파이선 코드 특성을 보여준다. 이번 절에서는 1.15 버전의 MNIST 코드들이 진화되어 변형된 형태를 면밀하게 살펴보기로 하자. 라이브러리 TensorFlow 와 matplotlib.pyplot을 불러오자. 앞 절과의 차이점은 최종 인식률을 92.6%에서 98% 이상으로 높일 수 있도록 중간에 784->128로 압축하는 은닉층을 하나 부과하였다는 점이다. 출력 결과 버전 2.9.2를 확인할 수 있다. 1 import tensorflow as tf print("TensorFlow version:", tf.__version__) import matplotlib.pyplot as plt ..

구글 Colab에서 TensorFlow 버전 1.15를 사용한 MNIST 예제

구글의 머신러닝 지원 라이브러리인 텐서플로우는 1.x 버전에서 1.15까지 업그레이드 된 후 2.x 버전으로 넘어와 현재 2.92까지 진화하였다. 초기의 1.x 버전에서는 그래프 파트와 실행 파트를 명확하게 구분해서 코드 작업이 이루어졌던 반면 2.x 버전에서는 그러한 구분이 사라져버린 근본적인 차이를 보여준다. 초보자들이 Colab에서 처음으로 2.x 버전의 텐서플로우를 사용한 MNIST 코드를 갑자기 경험하는 경우 머신러닝의 진면목을 제대로 이해하기 어려운 상황을 겪을 수 있기 때문에, 버전 1.15에서 사용했던 MNIST 코드 그래프 구조를 살펴만 보고 2.x 버전에서 어떤 방식으로 진화했는지 직접 Colab에서의 코딩 작업을 통해 살펴보도록 하자. 1 !pip install tensorflow==..

구글 Colab 노트북 사용법

컴퓨터 코딩을 다루다 보면 흔하게 접하는 용어로서 Front end 와 Back end 가 있다. 컴퓨터 코딩에서 Front end 란 코드를 작성 수정 빌드 업로딩 저장 및 라이브러리 설치를 지원하기 위한 편집 시스템을 뜻한다. 간단한 예로서는 아두이노 IDE를 들 수 있을 것이다. 마찬가지로 머신 러닝을 위한 코드 편집 작업을 위해서는 이미 잘 알려진 툴이 있다. 너무나 잘 알려진 아나콘다를 비롯하여 여러 가지 툴이 있을 수 있다. 특히 아나콘다에는 Spyder 편집기와 Jupyter Notebook 이 대표적이다. 반면에 Back end 는 일종의 Solver를 뜻한다. TensorFlow, Keras, PyTorch 와 같은 라이브러리들이 머신러닝을 위해 Front end에 설치되는 대표적인 Ba..

다층신경망(multilayer neural network) 확장

이 그림은 퍼셉트론 네트워크 구조를 나타낸다. 입력항 xi 가 가중치 wi 를 적용한 후 편향 값을 반영하여 y 가 연산되며 y 에 대해 문턱값 처리 후 출력이 일어난다. 생체 내에서는 다수의 뉴론들이 엮여있는 것처럼 이러한 단위 뉴론 구조를 어떻게 복합적으로 직병렬 연결할 것인지 고려해보자. 이 그림에서는 입력데이터가 복합적으로 처리되는 신경망 사례를 나타낸다. 실제로 MNIST 수기문자 판독을 위한 단일 레이어 머신러닝 코드 작성 시 하나의 문자 28X28=784 이미지 데이터는 1X784 리스트 데이터로 표현되며 이에 상응하는 가중치 매트릭스는 784X10 리스트 데이터 구조로 사용됨에 유의하자. 단일 레이어 신경망을 아래와 같이 2단 구조로 확장해 보자. 2단에서는 bias(바이어스, 편향) 항을..

라벨값 암호화 설정과 One Hot Code

이진 분류(binary classification) 예제에서 입력 데이터에 대한 단위 신경망의 출력은 판별이 가능하도록 라벨값을 “1” 과 “-1”( 또는 “0”)로 설정된다. 따라서 학습과정에서는 주어진 학습데이터인 라벨값에 맞춰 Cost 함수의 Gradient Search 기법을 성공적으로 적용하면 학습 결과 가중치(weight)가 결정된다. 2종류 이상의 분류(classification)를 위한 종류 수가 많아지게 되면 머신러닝 작업을 위한 적절한 암호화 표기 체제가 필요하게 되며, 그 대표적인 사례가 one hot 코드이다. MNIST 예제에서는 0~9까지의 10종류 수기문자를 분류해야 하며 위 표와 같은 one hot 코드가 사용된다. 10 종류의 서로 독립적인 클라스를 표현하기 위해서는 10 ..

텐서플로우 다변수 선형회귀법 예제: Antique Grand farther’s clock

할아버지 시계 입찰가 결정 머신 러닝 분야의 regression 예제들은 통계학과 밀접한 관계가 있ek. 시카고에는 밀을 포함한 곡물 중심의 상품 거래소가 오래전부터 있어 귀중한 거래 데이터들이 기록되어 남아 있다. 아래의 인터넷 주소를 참조해 보자. 참조: StatSci.orf http://www.statsci.org/data/multiple.html 이번 절에서 다루려는 할아버지 시계는 희귀한 고가의 골동품으로서 입찰 가격 사례데이터가 연식(Age)과 입찰 참가자 수(bidder)를 파라메터로 하여 상세한 자료를 남기고 있다. 아래의 인터넷 주소를 참조하여 data 파일을 다운하여 사용하기로 한다. 참조: http://www.statsci.org/data/general/auction.html 상태가 ..

텐서플로우 선형회귀법 예제

그림의 선형회귀법 예제에서 기울기 w를 미지수로 생각하고 회귀법(regression)으로 찾아보자. 미지의 웨이트 값 w는 처음에 random number 나 임의의 상수값을 준 상태에서 시작하면 된다. 한가지 주의할 점은 직선의 방정식을 결정하는 과정에서 2개 이상의 많은 수의 데이터들이 주어질 경우 이 점들을 대표할 수 있는 직선을 결정하게 되는 것이며, 이는 통계학이나 사회학 분야에서 많이 응용되는 기법이다. TensorFlow 라이브러리를 사용하여 1차식 regression 코드를 작성하자. 아울러 matplotlib.pyplot 라이브러리를 사용하여 주어진 좌표 데이터를 사용하여 점그래프(scatter graph)와 구해진 1차식 regression graph를 함께 작도하도록 한다. 1 imp..

Information Bit Number 및 Entropy 계산

머신러닝의 다양한 학습법들이 물리학이라든지 또는 정보과학에서 유래되었다는 점에 유의하자. 입자들의 볼츠만 확률분포가 차용되어 TensorFlow의 softmax에서 사용된다는 점도 그중의 하나일 것이다. 1948년 MIT에서 정보과학의 기초를 닦았던 Claude Shannon 교수의 통신에 대한 기본이론을 통해서 정보(information)의 비트수 계산법과 머신러닝 분야에서 엔트로피에의 응용에 대해서 알아보자. 랜덤 변수 X 의 가능한 값들이 A, B, C, D 일때 다음의 문자열 메시지 “BAACACCDDCDADABCDBBB…” 의 철자별 출현 빈도수의 확률로 분석해 보자. 이 문자열 데이터를 ‘0’과 ‘1’을 사용하면서 엔코딩하려면 각 문자별로 다음과 같이 각 2비트를 사용하여 엔코딩 할 수 있을 ..