일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 알고리즘 연습
- Django
- HTML
- DRF
- java
- 파이썬 알고리즘
- 알고리즘 문제
- Baekjoon
- 알고리즘 풀이
- django ORM
- 알고리즘
- 파이썬
- c++
- CSS
- es6
- 장고
- API
- js
- AWS
- form
- javascript
- web
- react
- MAC
- 백준
- django widget
- django rest framework
- Git
- PYTHON
- Algorithm
- Today
- Total
목록인공지능 (10)
수학과의 좌충우돌 프로그래밍
PCA 란? [인공지능] PCA (1) Principle Component Analysis 란? 실무에서 접하게 되는 데이터는 feature의 수가 대체로 큽니다. 이는 생각보다 더 큰 문제로 작용합니다. 당연히 데이터의 크기가 크다보니 학습 속도에도 영향을 미치고 다루기가 쉽지 않습니다. 따라서 차원의.. ssungkang.tistory.com PCA 를 통해 차원을 축소했으면 시각화 해서 나타낼 수 있습니다. 그 과정을 실습을 통해 보도록 하겠습니다. 실습 환경은 google colab 에서 진행했습니다. 기본 설정 import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.decomposition import..
실무에서 접하게 되는 데이터는 feature의 수가 대체로 큽니다. 이는 생각보다 더 큰 문제로 작용합니다. 당연히 데이터의 크기가 크다보니 학습 속도에도 영향을 미치고 다루기가 쉽지 않습니다. 따라서 차원의 수를 축소하는 방법이 여러가지가 있는데 그 중에서 대표적인 차원 축소 알고리즘, PCA 에 대해서 알아보도록 하겠습니다. PCA 의 원리 PCA 가 어떤 과정을 통해서 차원을 축소하는지 알아보도록 하겠습니다. 우선 다음과 같은 2차원 데이터가 있을 때, 현재 목표는 2차원 데이터를 1차원으로 축소하는 것입니다. PCA 는 데이터를 1차원으로 축소하는 방법으로 정사영을 사용합니다. 정사영을 하기 위해서는 축을 선택해야 하는데 축이 될 선택지는 다양합니다. 아래 그림과 같이 x1 축으로 축소를 할 수 ..
Intro 사진을 찍던 중 사진의 스타일을 바꿀 수 있는 걸 보고 새삼스럽게 든 생각. 이건 어떻게 구현하지? 그래서 이를 한 번 구현해보고자 하였습니다, 이에 대해서 찾아보니 이름은 뉴럴 스타일 트랜스퍼 로 2015년 리온 게티스에 의해 ‘A Neural Algorithm of Artistic Style ’ 논문으로 처음 세상에 알려졌습니다. 이 방식은 타겟 이미지의 콘텐츠는 보존하면서 참조 이미지의 스타일을 타깃 이미지에 적용하는 방식입니다. 아래 사진을 살펴보면, 첫 번째 사진은 독일의 튀빙겐이라는 곳에서 찍은 사진으로 타깃이미지가 되고, 두 번째 사진은 이를 빈센트 반 고흐의 '별이 빛나는 밤' 을 스타일 이미지로서 합친 사진입니다. 스타일이라고 함은 질감, 색깔, 이미지 등 다양한 크기의 시각 ..
google cloud vision API 를 활용한 글자인식 사전 준비 vision API 뿐만 아니라 다른 google API를 사용하기 위해서도 사전준비가 필요합니다. 이에 대해 알아보도록 하겠습니다. 먼저 아래 url 로 접속합니다. http://console.developers.google.com 이 곳에서 우리는 사용자 인증 정보를 만들고 API 를 사용할 수 있는 key 를 받을 수 있습니다. 좌측 메뉴바에서 사용자 인증 정보 로 이동하면 사용자 인증 정보 만들기 라는 버튼을 찾을 수 있습니다. 버튼을 클릭하면 인증 정보를 만들 수 있는 다양한 방식을 선택할 수 있습니다. 서비스 계정 키를 이용해서 만들어보도록 하겠습니다. 계정이름과 계정 ID를 적어주고 키 유형은 JSON 을 이용해서 받도..
영화 리뷰 이진 분류 IMDB 데이터 셋 영화 리뷰에 대한 데이터 50000개로 이루어져 있습니다. 이 중 25,000개의 훈련데이터와 25,000개의 테스트데이터로 나눠지며 각각 50%씩 긍정 리뷰와 부정 리뷰가 있습니다. 이 데이터는 이미 전처리가 되어 있어서 각 리뷰가 숫자로 변환되어있습니다. 리뷰를 숫자로 바꾸는 원리는 사전에 있는 단어와 숫자를 매핑시켜서 단어대신 숫자로 표현한 것입니다. 그럼 데이터를 불러와보겠습니다. from keras.datasets import imdb (train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000) num_words=10000 는 훈련데이터에서 가장 자주 사용하는 ..
신경망의 구조 1. 네트워크를 구성하는 층 층은 신경망의 가장 핵심적인 요소라고 할 수 있다. 하나 이상의 텐서를 입력으로 받아 마찬가지로 하나 이상의 텐서를 출력하는 데이터 처리 모듈이라고 볼 수 있다. 층에 따라서 상태를 가질수도 있고 아닐 수도 있는데 대부분의 경우 상태를 가지고 이 상태를 가중치 라고 한다. 입력되는 텐서에 따라서 다른 층을 선택하여야 한다. (samples, features) 크기의 2D 텐서로 저장된 간단한 벡터 데이터는 완전 연결층(fully connected layer) 이나 밀집 층(dense layer)라고 불리는 밀집 연결 층(densely connected layer)에 의해 처리된다. 케라스에서는 이를 Dense 클래스로 구현한다. (samples, timestep..
텐서연산 그레디언트 기반 최적화 output = relu(dot(W,input)+b) W와 b는 각 층의 속성처럼 생각할 수 있다. W는 가중치, b는 편향이라고 부르며 초기에는 무작위 난수로 채워져 있다. 당연히 난수이기 때문에 위 식의 계산은 의미가 없다. 여기서 각 층의 속성들을 조정하게 되는데 그 과정은 다음과 같다. 훈련 샘플 x 와 이에 대응되는 타깃 y의 배치를 추출한다. x 에 대한 예측값 y_pred를 구한다. y_pred와 y의 차이를 이용해 손실을 계산한다. 배치에 대한 손실이 감소되는 방향으로 각 층의 속성들을 조정한다. 4번에서 각 층의 속성들을 어떠한 방법으로 조정할지가 중요한 포인트가 된다. 확률적 경사 하강법 앞에서 봤던 4번을 어떻게 구현할지에 대한 이야기이다...
텐서연산 텐서 연산 브로드 캐스팅 놀랍게도 2D 텐서와 벡터를 더할 수 있다. 두 텐서는 크기가 다른데 어떻게 더해질 수 있을까?작은 텐서가 큰 텐서에게 맞춰져서 더해지게 되는데 이를 브로드 캐스팅 이라고 한다.브로드 캐스팅은 다음과 같은 단계로 실행된다. 큰 텐서의 ndim에 맞도록 작은 텐서에 축이 추가된다. 작은 텐서가 새 축을 따라서 큰 텐서의 크기에 맞도록 반복된다. 예를 통해 알아보자.x의 크기는 (32.10) 이고 y의 크기는 (10,) 일 때, 1번에 의해 y에 비어있는 축을 추가하여 크기를 (1,10) 으로 만든다. 그 후 y를 32번 반복하면 텐서 y의 크기는 (32,10)이 된다. 이를 코드로 구현해보자. def braodcast(x,y): assert len(x.shap..
신경망을 위한 데이터 표현 모든 머신러닝 시스템은 일반적으로 텐서를 기본 데이터 구조로 사용한다. 텐서는 데이터를 위한 컨테이너라고 생각할 수 있다. 그 데이터로는 임의의 차원 개수를 가지는 행렬이 들어간다. 각 차원에 따라 어떻게 데이터와 텐서가 변화하는지 알아보자. 스칼라(0D텐서) 하나의 숫자만 담고 있는 텐서를 스칼라라고 한다. 숫자는 float32 또는 float64 타입을 가진다. ndim 속성을 사용하면 넘파이 배열의 축 개수를 확인가능 텐서의 축 개수를 랭크(rank) 라고 부른다. import numpy as np x = np.array(7) >>> x array(12) >>> x.ndim 0 벡터(1D텐서) 숫자의 배열을 벡터 라고 한다. 아래 예시에서의 벡터는 5개의 원소를 가지고 있..
인공지능과 머신러닝, 딥러닝 인공지능과 머신러닝, 딥러닝은 다음과 같은 포함관계를 가진다.이에 대해서 알아보자. 인공지능 정의 : 보통의 사람이 수행하는 지능적인 작업을 자동화하기 위한 연구활동 이미지 처럼 머신러닝과 딥러닝을 포괄하는 종합적인 분야 심볼릭 AI(symbolic AI) 1950년대부터 1980년 AI의 지배적인 패러다임 명시적인 규칙을 충분하게 많이 만들면 인간 수준의 인공지능을 만들 수 있다. 머신러닝 배경 : 심볼릭 AI 는 체스게임 처럼 잘 정의된 문제에 대해서는 적합하지만, 이미지, 음성과 같은 불분명한 문제에 대해서는 부적합 기존의 방식은 규칙과 데이터를 입력하여 해답을 찾는 방식이라면, 머신러닝은 데이터와 해답을 입력하여 규칙을 찾는 방식 프로그래밍이 되는 것이 아닌 훈련 이 ..