반응형

01. 통계 모델과 확률 붙포

확률기반

설명 변수와 목적 변수가 갖는 어떤 확률에 근거한 관계를 '확률분포 모델'이라고 합니다.

 

머신러닝

입력 데이터의 특성과 분포 경향 등에서 자동으로 데이터를 나누거나 재구성을 합니다. 

통계 기반 머신러닝에서는 여기에 확률 개념이 크게 관여합니다.

 

지도 학습 Supervised Learning: 머신러닝 안에서는 데이터에 정답 정보가 결합된 학습 데이터(또는 훈련 데이터)로 데이터의 특징을 모델링하는 것 

자율 학습 Unsupervised Learning: 입력 데이터의 정답을 모르는 상태에서 사용하는 것으로 클러스터 분석 , 차원 압축, 밀도 추정 등이 해당됩니다.

식별 , 예측, 클러스터 분석 등을 실행해 데이터의 새로운 특징을 찾아내는 작업을 데이터 마이닝이라고 합니다.

 

기저 함수 basis function

정규 직교 기저 orthonormal basis: 설명 변수와 목적 변수가 1대1로 대응할 때를 그래프로 나타낸 것

이는 좌표축 각각이 직교하는 '선형 독립 linaearly independent'상태에서 백터로 나타내는 좌표축이라도 설명할 수 있습니다.

정규분포 이외의 분포를 다루는 일반화 선형 모델 generalized linear model과 혼합 정규분포 mixture normal distribution등의 혼합 모델은 기저 함수와 기저 함수의 선형 결합으로 모델을 나타내므로 중요한 개념입니다.

 

주요 기저 함수

연산 확률 분포

이산 확률 분포

 

정규분포 가우스분포 Gaussian distribution라고도 합니다.

감마분포 특정 수의 사건이 일어날 때 까지 걸리는 시간에 관한 연속확률분포입니다.

지수분포 : 감마분포의 특별한 형태로 사건이 일어나는 시간 간격의 확률분포인 지수분포가 있습니다. 푸아송 분포와도 깊은 연관이 있습니다.

베타 분포 : 2개의 변수를 갖는 특수 함수인 베타 함수를 이용한 분포

디리클레 분포 Dirichlet distribution는 베타 분포를 다변량으로 확장한 것으로 다변량 베타 분포라고도 합니다.

이항 분포 : 동전 던지기처럼 앞 뒤 두가지 종류 중 어느 하나가 나오는 가와 같은 실험을 베르누이 시행 이라고 합니다.

이 베르누이 시행을 여러 번 반복했을 때 확률분포가 이항분포입니다. 

음이항 분포: 이항분포와는 다르게 r번 성공하는 데 필요한 시행 횟수 k의 분포를 음이항분포라고 합니다.

푸아송 분포 : Poisson distribution는 일정 시간 간격에 걸쳐 평균 λ번 일어나는 현상이 k번 발생할 확률분포 (X)를 말합니다. 푸아송 분포가 단위 시간에 사건이 일어날 확률을 나타낸다면 , 지수분포는 사건이 일어난 후 다시 발생할 때까지의 시간 간격에 고나한 확률밀도를 나타냅니다. 이 때문에 "푸아송 분포와 지순분포는 같은 사건의 발생 확률을 다른 측면에서 본다"라고 합니다.

카이제곱 분포 chi-squared distribution는 감마 분포의 특별한 형태입니다. =>통계적 추론 에서 자주 이용

초기하분포 : 반복하지 않는 시동에서 사건이 발생할 확률분포입니다.

코시분포 : 로렌츠 분포 라고도 하며 물리학에서는 브라이트-위그너 분포라고도 합니다.

로지스틱 분포 : 확률분포의 확률 변수가 특정 값보다 작거나 같은 확률을 나타내는 누적분포 함수가 로지스틱 함수인 분포를 로지스틱 분포 Logistic distribution라고 합니다.

베이불 분포 Weibull distribution는 물체의 부피와 강도의 관계를 나타내는 분포입니다. 기기의 수명과 고장 시간 등의 신로성을 나타내는 지표로 이용할 수 있습니다.  베이불 분포의 특별한 형태로는 레일리 분포가 있습니다. 레이더 신호와 산란된 신호 강도의 분포 모델로 사용할 수 있습니다.

 

 

손실함수와 경사 하강법

회귀하려는 모델 함수가 있을 때 회귀분석은 오차를 제곱한 것의 합계인 함수를 목적 함수로 설정하고 목적 함수가 최솟값이 되도록 계산합니다.

목적 함수와 비슷한 함수로 손실 함수 loss function가 있습니다

손실 함수의 최솟값을 구할 때는 경사 하강법 gradient descent method또는 최대 가능도 방법 miximum likelihood method을 사용합니다.

 

 

02. 베이즈 통계학과 베이즈 추론

베이즈 정리는 두 종류의 조건부 확률 사이의 관계를 정의합니다.

 

최대가능도 방법과 EM알고리즘

 

베이즈 추론: 데이터의 모집단분포는 유일하지 않습니다.

베지즈 추정량: 사후분포의 평균 제곱 오차 average squared error를 최소화하는 값을 베이즈 추정량이라고 합니다. 사후분포의 평균값입니다.

사후 메디안 추정량 : 사후분포의 평균 절대  오차 mean absolute error를 최소화하는 값으로 사후분포의 중간값입니다.

 

MAP추정량: 최대 사후 확률이라고 합니다.

 

베이즈 판별 분석: 

판별 분석은 데이터 X가 어떤 모집단분포에서 유래했는지 파악하는 데 사용합니다.

 

03 . 마르코프 연쇄 몬테카를로 방법 MCMC

원쥬율의 근삿값 계산 문제:

 

몬테카를로 방법: 원주율의 근삿값 계산은 몬테카를로 방법 이라고 하는 알고리즘.

 

샘플의 열 생성 과정은 마르코프의 성질이 있는 마르코프 연쇄 Markov chain라고 합니다.

 

베이즈 계층 모델 : 

마르코프 연쇄 몬테카를로  방법을 활용하면 매개변수의 차원이 높은 복잡한 모델을 처리할 수 있습니다.

특히 베이즈 계층 모델 은 지금까지 소개한 모델 중에서 특히 자유도가 높은 통계 모델을 설계할 수있습니다.

 

04. 은닉 마르코프 모델과 베이즈 네트워크

시계열 데이터의 혼합 분포 추정에 사용되는 모델을 은닉 마르코프 모델 이라고 합니다.

 

베이즈 네트워크: 전문가 시스템은 주어진 조건에 적합한 답변을 합니다만 추론 규칙이 정교하지 않다는 약점이 있습니다. 그래서 확률 개념을 도입해 추론 규칙을 개선한 전문가 시스템으로 제안한 것을 베이즈 네트워크 라고 합니다.

 

 

출처 : 처음 배우는 인공지능

반응형
반응형

신경망과 베이즈 네트워크 등을 이용해 데이터를 분석하려면 그래프 네트워크를 알야야 합니다.

 

01. 그래프 이론

 

그래프 라고 하면 막대 그래프나  파이 그래프 등 표 형식의 데이터를 그림으로 나타낸 것을 연상한는 분이 많을 겁니다.

그러나 여기에서 말하는 그래프는 점과 선을 연결한 것을 의미합니다.

점을 꼭지점, 정점Vertex, 노드 라고 하며 ,선을 변 또는 간선 Edge이라고 합니다.

 

모든 정점 사이를 연결한(경로가 존재하는 ) 그래프를 연결 그래프 connected graph그렇지 않은 것을 비연결 그래프라고 합니다. 어떤 정점도 연결되지 않은 정점을 고립 정접Isolated vertex이라고 합니다.

 

그래프에서 정점 2개가 2개 이상의 변으로 연결되는 변은 "편행 변Parallel edge"이라고 합니다.

1개의 정점에 시작과 끝이 연결된 변이 존재하면 " 양 끝이 같은 변 self-loop'입니다.

 

무향 그래프와 유향 그래프 

유향 그래프direced graph 그래프의 변에 방향이 존재하면 

특히 어떤 정점에서 출발 한 후 해당 정점에 돌아오는 경로가 하나인 그래프는 유향 빈순회 그래프 Directed acyclic graph, DAT라고 합니다. 

변에 방향이 존재하지 않는 그래프는 무향 그래프 Undirected graph라고 합니다.

가중 그래프 Weighted Graph: 유향 그래프 중 가중치 정보가 추가된 그래프

간선 가중 그래프 Edge-Weighted Graph가중치는 정점에도 적을 수 있으므로 변에 가중치를 나타내며 간선 가중 그래프

정점에 가중치를 나타내면 정점 가중 그래프 Vertex-Weighted Graph라고 합니다.

 

그래프의 행렬 표현

인접행렬 adjacency matrix: 정점 사이의 관계를 나타내는 행렬입니다.

  정점 수가 n일 때 n*n행렬이며 정점 사이가 변으로 연결되어 있으면 1, 연결되어 있지 않으면 0이 됩니다.

근접행렬 incidence matrix: 정점과 변의 관계를 나타내는 행렬입니다.

  변수가 m일 때 n*m행렬이며 정점과 변이 연결되어 있다면 1, 연결되어 있지 않으면 0이 됩니다.

 

트리 구조 그래프

그래프에 있는 여러 개 정점에서 출발점이 되는 정점으로 돌아가는 경로가 유일하며 , 출발점이 되는 정점이 막다른 정점(더는 새로운 변을 통해 이동할 수 없는 정점)인 그래프를 트리 구조라고합니다.

출발점이 되는 정점은 루드 Root(뿌리)라고 합니다

 

의사결정트리는 통계 모델 예측을 위한 조건 분기에 사용되는 규칙으로 사용합니다.

탐색 트리는 상태(조건이 포함된 정보 구조)를 나누는 수단으로 사용합니다.

 

02. 그래프 탐색과 최적화

탐색 트리 구축

 

이러한 최적 경로 탐색은 현재 시간 t에 해당하는 상태에 어떤 행동을 했을 때 얻을 수 있는 이익이나 지불 비용을 계산해 다음 시각인 t+1의 상태를 결정하는 것과 같습니다. 이 과정을 반복 실행하면 목적지에 도달했을 때 시간인 T의 이익을 최대화하거나 비용을 최소화하는 계획 문제로 다룰 수 있습니다. 이러한 계획 문제를 단단계(의사)결정 문제라고 합니다.

 

이진 탐색 트리 binary search tree:  인덱스 정렬된 데이터를 반으로 나눠 저장하는 작업을 반복해 트리구조를 만든 후 원하는 데이터를 빠르고 효율적으로 찾습니다. 

 

탐색 트리 추적방법

깊이 우선 탐색Depth-first search DFS : 루트 노드에 연결된 경로 중 하나를 선택해 막다른 노드에 도착할 때 까지 일단 탐색한후 , 다시 바로 앞 노드로 이동해 다음 막다른 노드까지 탐색을 반복합니다.

너비 우선 탐색 Breadth-first search , BFS: 루트 노드와 연결된 노드를 모두 탐색한 다음 바로 다음에 깊이의 노드들을 전부 탐색하는 과정을 반복합니다.

노드들 넣는 상자를 스택이라고 합니다.

노드를 넣는 상자를 큐라고 합니다.

 

효율적인 탐색 방법

비용에 따른 탐색 방법

게임 트리를 전략에 이용하는 방법

동적 계획법

 

03. 유전 알고리즘

 

유전 알고리즘구조

생물이 살아가면서 교차 , 돌연변이 도태 등으로 환경에 적합하도록 진화한다는 가설에 기반을 둔 최적화 기법을 유전 알고리즘이라고 합니다.

이 과정에서 교차와 돌연변이 등 진화론 아이디어를 도입한 계산 방법을 진화연산이라고 합니다.

진화연산은 다음 특징이 있습니다.

집단성 : 개체 다수를 집단으로 설정해 동시에 탐색할 때는 병렬 연산합니다.

탐구 가능성 : 탐색 공간(설명 변수와 목적 변수 등이 취할 수 있는 값의 법위)의 자세한 사전 지식을 요구하지 않습니다.

다양성 : 집단에 있는 개체의 다양성으로 노이즈와 동적 변화에 적응성을 갖게 되므로 견고한 답을 얻을 수 있습니다.

 

유전 알고리즘 용어와 알고리즘 흐름

도태(선택) 개체를 남기는 처리 유전 알고리즘에서 적합도가 높은 개체를 선택해 남기면 다음 세대가 되었을 때 집단 안에서 더 최적 해결책에 가까운 개체가 많아지는 상태를 만들 수 있습니다.

교차 개체 2개에서 자식 둘을 생성하는 처리 부모의 유전자를 재조합해 자식 둘을 생성하는 것

돌연변이 개체 1개의 유전자를 변화시키는 처리 부모의 유전자를 재조합해 자식 한 명을 생성하는 것으로 적합도를 높인다는 기준으로 개체를 다루는 도태나 교차와 달리 무작위 탐색에 가깝습니다.

 

유전 알고리즘의 사용예:

외판원 문제 Traveling salesman problem TSP

복수 지점을 한번 만 통과하는 최단거리(또는 최단시간)을 이동해 출발점으로 돌아오는 경로를 계산하는 조합 최적화 문제

 

04. 신경망

헵의 법칙과 형식 뉴런

신경망 : 신경 세포(뉴런_는 다른 신경 세포에게 전기 신호를 받았을 때 전기 신호가 일정 기준을 넘으면 다음 신경 세포로 신호를 전달합니다.

 

헵의 법칙Hebb : 시냅스의 유연한 연결, 즉 가소성 있는 변화를 의미하며 실제로 일어난다는 사실이 나중에 밝혀졌습니다. 

 

신경망

계층

입력계층 -> 출력 계층

입력계층 -> 중간계층 -> 출력계층

계층: 신경망에서는 같은 종류의 형식 뉴런을 여러 개 병렬로 배열해 유닛을 형성하는 것

 

활성화 함수 :

형식 뉴런에서 받은 입력값을 출력할 때 일정 기준에 따라 출력값을 변화시키는 비선형 함수를 활성화 함수라고 합니다.

 

단위 계단 함수

시그모이드 함수

계단 함수

 

퍼셉트론

 

볼츠만 머신 : 각 노드가 양방향으로 연결된 신경망 구조를 제압합니다. 

이웃 노드가 받은 자신의 출력값을 다시 자신이 받는 피드백 메커니즘이 동작한다는 것이 핵심입니다.

 

요차역전파법backpropagation : 

 

다층 퍼셉트론: 입력 계층과 출력 계층만 있는 간단한 퍼셉트론의 약점은 선형 분리할 수 있는 데이터에만 적용할 수 있으며 계산 시간이 길다는 것입니다.

 

다층 퍼셉트론에서는 순방향으로 계층마다 출력을 계산한 후 오차역전파법을 이용해 출력 계층에서 역방향으로 가중치 업데이트를 실행합니다.

 

자기조직화 self-organization: 신경망의 학습 과정에서 네트워크가 데이터 입력과 출력 후의 가중치를 업데이트해서 스스로 일관성 있게 변화해 나가는 것

 

 

05. 텐서플로를 이용한 신경망 만들기 예제 

필요한 모델 이불러오기

import tensorflow as tf
import numpy as np

MNIST 데이터 다운로드하기

학습용 데이터 : 55,000

검증용 데이터 5,000

테스트용 데이터 10,000

이미지와 라벨 쌍으로 구성합니다.

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('./data/mnist/',one_hot = True)

뭔가 이상한것 나왔을 경우 다시 실행하면 된다.

결과

one_hot True로 설정한다.

 

Mnist 데이터 살펴보기

print(len(mnist.train.labels))
print(len(mnist.train.images))

print(mnist.validation.num_examples)
print(mnist.test.num_examples)

mnist.test.labels.shape

(10000, 10)

 

mnist.test.labels[0:5,:]

mnist.test.cls = np.argmax(mnist.test.labels, axis = 1)
mnist.test.cls[0:5]

array([7, 2, 1, 0, 4], dtype=int64)

 

하이퍼파라미터 설정하기

num_epochs = 30
learning_rate = 0.01
num_node_input = 28 * 28 #입력 계층의 노두 개수
num_node_hidden1 = 256 # 은닉 계층 1의 노드 개수
num_node_hidden2 = 256 #은닉 계층 2의 노드 개수
num_node_output = 10 # 출력 계층의 노드 개수

모델 만들기

입력 계층

x_true = tf.placeholder(tf.float32, [None, num_node_input])
y_true = tf.placeholder(tf.float32, [None, num_node_output])

은닉 계층 1

weight_1 = tf.Variable(tf.truncated_normal([num_node_input, num_node_hidden1], stddev = 0.01))
bias_1 = tf.Variable(tf.zeros([num_node_hidden1]))

은닉 계층 2

weight_2 = tf.Variable(tf.truncated_normal([num_node_hidden1, num_node_hidden2], stddev = 0.01))
bias_2 = tf.Variable(tf.zeros([num_node_hidden2]))

출력 계층

weight_3 = tf.Variable(tf.truncated_normal([num_node_hidden2, num_node_output], stddev = 0.01))
bias_3 = tf.Variable(tf.zeros([num_node_output]))
hidden_1 = tf.nn.relu(tf.add(tf.matmul(x_true, weight_1), bias_1))
hidden_2 = tf.nn.relu(tf.add(tf.matmul(hidden_1, weight_2), bias_2))
y_pred = tf.nn.relu(tf.add(tf.matmul(hidden_2, weight_3), bias_3))
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = y_pred, labels = y_true))
optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)

오류

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits = y_pred, labels = y_true))
optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)

 

학습하기

세션을 실행

sess = tf.Session()
sess.run(tf.global_variables_initializer())
batch_size = 100
total_batch = int(mnist.train.num_examples/batch_size)
for epoch in range(num_epochs):
    total_cost = 0
    
    for i in range(total_batch):
        batch_xs, batch_ys = mnist.train.next_batch(batch_size)
        sess.run(optimizer, {x_true: batch_xs, y_true: batch_ys})
        total_cost += sess.run(cost, {x_true: batch_xs, y_true: batch_ys})
        
    print("Epoch : {%04d}" % (epoch+1), "Cost : {:.3f}".format(total_cost / total_batch))

print("최적화를 완료했습니다.")

평가하기

correct_prediction = tf.equal(tf.argmax(y_pred,1), tf.argmax(y_true,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction , tf.float32))
print("정확도 : " , sess.run(accuracy, {x_true: mnist.test.images, y_true: mnist.test.labels}))

정확도 : 0.7453

소스코드.py
0.00MB

 

출처 : 처음 배우는 인공지능

반응형
반응형

소스코드.ipynb
0.02MB

'인공지능 데이터 분석 시스템'에서 중요한 개념 하나는 '주어진 데이터를 비교해 원하는 결과를 찾는 기능

입니다. 이는 회귀분석을 이용해 최적해optimal solution와 유사도라는 지료를 계산하는 것입니다.

 

01. 선형 문제와 비선형 문제

풀기 쉬운 문제 (선형문제)와 풀기 어려운 문제(비선형 문제)를 살펴봅니다.

 

두 변수의 상관관계

데이터를 다룰 때 데이터를 구성하는 항목을 변수라고 합니다.

그리고 데이터에서 변화를 나타내는 한 가지 이상의 변수 쌍, 또는 변수 쌍을 사용한 계산 식을 특징량 feature이라고 합니다.

 

선형 계획법과 비선형 계획법

선형 계획법: 선형 함수를 최적화해 문제를 해결하는 것을 linear programming

변숫값 쌍으로 구성하는 점들이 일직선 상에 놓이는 것처럼 보인다면 선형 함수일 가능성이 있습니다. 1차 함수

"배낭 문제"

정수에 한정해서 문제를 해결할 때는 정수 계획 문제라고도 합니다.

 

사상 morphism: 변숫값 쌍을 점 형태로 나타낼 수 있다면 함수 형태로 변화된 것입니다.

일대일 함수 , 단수 함수

일대일 대응 

 

비선형 계획법 Nonlinear programming 비선형 문제

볼록 함수

오목함수

볼록함수가 아닐 때는 선형 계획 문제와 볼록 계획 문제를 조합한 분기 한정법 branch and bound, BB으로 해결하는 방법 등이 있습니다.

 

02. 회귀분석 

회귀분석은 주어진 데이터로 어떤 함수를 만들어 낸 후 , 이 함수를 피팅하는 작업입니다. 

피팅은 함수에서 발생하는 차이(잔차 Residual의 크기)가 최소화되도록 함수를 조정해주는 것을 의미합니다.

 

선형 모형 General Linear Model "잔차의 분포가 정규분포를 따른다."는 전제로 만들어진 함수

일반화 선형 모형 Generalized Linear Model:임의의 분포로 만들어진 함수

 

단순회귀: 가장 기본적인 회귀분석은 요소들 사이의 비례 관계를 활용하는 단순회귀 분석(단일회귀)입니다.

예: 신장과 체중 사이 관게

 

회귀직선의 기울기와 절편 구하기

 

다중회귀: 독립 변수가 여러개인 경우의 회귀분석

 

다중공선성Multicollinearity 문제 : 독립 변수들 각각의 선형 독립어어야 한다는 것이 회귀분석의 전제인데 독립변수의 수가 늘면 독립 변수들 사이에 존재하는 상관관계가 가입해 결과에 영향을 주는 것입니다.

 

다항식 회귀

 

 

로지스틱 회귀 : 종속 변수에 약간의 수정을 가한 선형회귀로 다항식 회귀처럼 일반화 선형 모델의 하나로 분류합니다.

 

 

03. 가중 회귀분석 

 

최소제곱법 수정 : 특깃값 Singular Value에 취약하다는 약점이 있습니다.

Lowess분석 : 어떤 한 지점에 가중회귀 함수를 사용해 평활화 smoothing를 실행한 회귀식 도출 방법입니다.

 

l2정규화 ,l1정규화

페널티를 부여하는 방식은 l2정규화 , l1정규화 , l1정규화 와 L2정규화를 선형 결합한 일래스택 넷Elastic Net등이 있습니다.

페널티를 부여하는 항을 벌칙 항 penalty term또는 정규화항 regularization term이라고 합니다.

 

04. 유사도 

비교하는 대상이 얼마나 비슷한지 확인하는 유사도를 설명합니다.

 

코사인 유사도 : 변숫값 쌍 x,y가 주어졌을 때 문서사이의 유사도를 계산

 

상관계수: "2개의 확률 볁수 사이 분포 규칙의 관계(한쪽이 증가하면 다른 한쪽도 증가하고 한쪽이 감소하면 다른 한쪽도 감소하는 것)로 , 대부분 선형 관계의 정도를 의미한다"고 말할 수 있습니다.

상관계수 1~-1사이의 값으로 나타내며 양의 값이면 양의 상관관계를 , 음의 값이면 음의 상관관계입니다.

스피어만의 순위 상관계수 : 스피어만의 순위 상관계수는 피어슨 상관계수의 특별한 경우입니다. 같은 순위가 있다면 순위 를 보정(같은 순위의 우선순위를 따짐)해야 하지만 , 같은 순위으 수가 적을 떄는 순위 보정 없이 상관계수를 구해도 괜찮습니다.

 

켄달의 순위 상관계수

켄달의 순위 상관계수는 같은 순위인 데이터의 개수 K, 다른 순위인 데이터의 개수 L을 사용해 개산합니다.

켄달의 순위 상관계수는 1~-1사이의 값이며 , 1이나 -1에 가까울 수록 강한 상관관계가 있습니다. 상관관계가 없는 경우에는 0이 됩니다.

 

상관함수 

함수는 특정 시점의 결괏값을 구할 수 있으므로 함수 결괏값 쌍으로 상관계수를 구한 후 이를 함수로 나타내면 됩니다. 이를 상관함수라고 합니다.

교차상관함수는 두 함수에서 어떤 시점의 두 함수 결괏값 쌍의 상관계수를 구해 함수로 나타내는 것입니다.

자기상관함수는 두 함수가 같은 함수일 때 서로 다른 시점의 함수 결괏값 상관계수를 구할 때 사용합니다.

 

거리와 유사도

편집거리Edit distance: 치환 ,삽입 , 삭제의 세가지 요소에 각각 페널티를 설정하는 형태를 취하고 페널티의 합계를 점수로 설정해 유사도를 규정합니다.

레벤슈타인 거리 Levenshtein distance: 값이 아닌 문자열 사이의 유사도를 나타낼 때 사용하는 것 

해밍거리 Hamming distance:  고정 길이의 이진 데이터에서 서로 다른 비트 부호 수를 갖는 문자 개수

2개 비트열의 배타적 논리합을 구한 결과에 존재하는 1의 개수가 해밍거리입니다. 주로 오류 검사에 이용합니다.

 

해밍 거리와 레벤슈타인 거리

유클리드 거리 :점 2개의 좌표 사이 직선거리

마할라노비스 거리 Mahalanobis distance: 는 유클리드 거리에서 점수를 늘려 거리를 구하는 것을 말합니다.

마할라노비스 거리는 데이터의 상관관계를 고려한 여러 개의 점 집단에서 어는 점까지의 거리를 계산합니다.

 

자카드 계수: 집합 2개의 유사도를 구할 때 집합 2개의 공통 요소 수를 전체 요소 수로 나눈것을 자카드 Jaccard계수라고 합니다.

단순히 벤 다이어그램을 그려서 구할 수 있으며 집합을 구성하는 요소가 수치인지 문자열인지를 고려하지 않아도 되므로 편리합니다.

 

05. 텐서프로를 이용한 선형 회귀 예제

y = wx+b

 

필요한 모델 불러오기

import tensorflow as tf
import matplotlib.pyplot as plt
tf.__version__

'1.15.0'

 

하이퍼파라미터 설정하기 

learning_rate = 0.01
num_epochs = 1000
step_display = 50

 

 

학습에 이용할 데이터 정의

x = [2.7,  4.8,  9.3, 13.4,  24.8,  31.3,  48.5,  53.0,  68.1,  74.2, 88.6,94.5]
y = [7.0, 28.8, 28.8, 67.1, 48.8, 100.2, 140.0, 190.2, 215.2, 285.6, 260.3, 251.1]
assert len(x) == len(y)
len(x)

12

assert문을 활용해 x와 y의 개수가 같지 않음녀 에러가 발생합니다.

 

가중치 weight와 편향 bias

tf.random_uniform()함수는 무작위 수로 초기화 하는데 , [1]은 변수의 형태를 , -1.0은 최솟값, 1.0은 최댓값을 의미

-1.0 ~ 1.0 사이의 스칼라값을 무작위로 생성합니다.

name 인자는 텐서프로에 이름을 알려주려고 사용합니다.

weight = tf.Variable(tf.random_uniform([1], -1.0, 1.0), name = 'weight')
bias = tf.Variable(tf.random_uniform([1], -1.0, 1.0), name = 'bias')

모델을 학습시킬 때 x좌표와 y좌표를 피드해줄 플레이스홀더 를 정의 합니다. tf.placeholder()

x_true = tf.placeholder(dtype = tf.float32, name='x_true')
y_true = tf.placeholder(dtype = tf.float32, name='y_true')

플레이스홀더는 그래프를 구출할 때는 메모리에 저장하지 않음며 그래프를 실제 실행할 때 피드하면서 메모리에 저장합니다.

 

그래프 만들기

y_pred 예측 값 y = wx+b

y_pred = tf.add(tf.multiply(weight, x_true) , bias)

예측값은 y_pred에서 실제값인 y_true를 뺀 값에 제곱해서 평균을 계싼한 값이 비용(cost또는 loss)이 됩니다.

cost = tf.reduce_mean(tf.square(y_pred - y_true))

비용을 최소화할 optimizer를 정의합니다.

optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)

 

학습 시작하기

세션을 실행하고 변수를 초기화합니다. 텐서플로는 세션 실행 시 반드시 모든 전역 변수를 초기화해야 합니다.

init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)

학습

for epoch in range(0,num_epochs):
    _, c = sess.run([optimizer, cost], feed_dict={x_true: x, y_true: y})
    if (epoch+1) % step_display == 0:
        print("Epoch: {0}, cost: {1}, weight: {2}, bias: {3}".format(
         epoch+1, c, sess.run(weight), sess.run(bias)))

print("최적화 작업을 완료했습니다.")

xrange(num_epochs)-> range(0,num_epochs)

결과 :

최종 비용 ,가중치 편향을 구해 출력합니다.

training_cost =  sess.run(cost, feed_dict = {x_true:x, y_true:y})
print("최종 cost: {}".format(c))
print("최종 weight: {}".format(sess.run(weight)))
print("최종 bias: {}".format(sess.run(bias)))

 

그래프로 직선 비교하기

x좌표와 y좌료를 이용해 빨간색의 동그라미 형태로 점을 찍습니다.

  • ro에서 r은 빨간색을 o는 동그라미를 의미합니다.
  • 학습의 결과로 얻은 최적화된 선을 그립니다.
  • 범례(legend())를 보여줍니다.
  • 시각화한 그래프를 출력합니다.
plt.plot(x,y,'ro', label='Original data')
plt.plot(x,sess.run(weight)* x + sess.run(bias) , label = 'Optimized line')
plt.legend()
plt.show()

 

마지막으로 세션을 닫습니다.

sess.close()

 

 

출처 : 처음 배우는 인공지능

 

반응형
반응형

시뮬레이션 프로그램 : 컴퓨터 프로그램은 기본적으로 사람에게 어떤 입력 데이터를 받아 상황에 맞는 결과로 응답합니다. 그런데 반복 처리나 타이머 처리를 이용하면 마치 사람이 지속해서 데이터를 입력하는 것 같은 상황을 만들 수 있습니다. 이러한 구조를 이용한 것이 시뮬레이션 프로그램입니다

프로그램 속에서 반복 처리를 실행하면서 마치 살아 있는 것처럼 상태를 변경해 가는 오토마톤과 인공 생명 프로그램입니다.

 

01. 인공 생명 시뮬레이션

기계 스스로 의사를 갖거나 살아 있는 것처럼 활동하는 인공 생명 시뮬레이션을 설명합니다.

인공생명이란

생명체의 가장 중요한 특징은 자기 복제(자손을 남긴다)입니다.

라이프 게임

감염 시뮬레이션 모델

SIR모델: 건강한 사람 Susceptible , 감염자 Infected, 항체 보유자 Recovered의 세가지 상태를 기반으로 둔 감염 시뮬레이션 모델을 SIR모델이라고 합니다.

 

SEIR모델

잠복기에 있는 건강한 사람 Exposed의 상태를 추가한 모델

 

 

02. 유한 오토마톤

외부 입력이나 이벤트가 발생할 때 유한 패턴 안에서 상태를 변화시키는 모델인 유한 오토마톤(유한 상태 기계)를 설명합니다.

오토마톤: 시간 경과와 상태 변화를 표현하고 , 시간 흐름에 따른 공간적인 구조 변화를 연구하는 이론

라이프 게임처럼 칸(셀)을 이용하면 셀 오토마톤이라고 합니다.

 

오토마톤의 개념은 어떤 자극을 받아 반응을 나타내는 꼭두각시 인형(자동 기계)에서 유래했습니다.

인형이 어떤 상태를 기억하게 할 수 있고 , 자극을 받을 떄 마다 다른 반응를 보입니다. 이러한 꼭두각시 인형의 개념을 상태 기계 state machine라고 합니다.

유한 상태 기계 유한 상태를 갖는 상태 기계를 유한 오토마톤 또는 유한 상태기계라고 합니다.

 

접수 상태 accept state: 상태 전이 다이어그램은 시작점과 종료점이 정해져 있으며 종료점에서 끝난 상태

접수 상태에서 실행을 종료할 수 없다면 오류 등이 발생한 비정상 상태라는 뜻이다.

 

오토마톤과 언어 이론

오토마톤: 상태의 변화와 규칙을 나타낼 수 있으므로 언어의 구문 모델을 나타내는 데도 이용 할 수 있습니다.

언어 이론에서는 문자 집합을 알파벳이라고 하며 , 알파벳 안 문자 중복을 허용해 늘어 놓은 문자를 문자열이라고 합니다.

 

언어 이론 : 기호를 사용해 언어 정의나 언어 생성 규칙을 연구하는 것 

 

03. 마르코프 모델 

마르코프 모델: 확률에 기반을 두고 다양한 상태 변화를 표현하는 것 

상태 전이 다이어그램 상에서 상태를 바꿀 때 현재 상태만 다음 상태 변경에 영향을 준다. = 마르코프 과정

 

마르코프 모델의 주요 개념

상태의 변화 

마르코프 성질 Markov Property : 미래 상태의 조건부 활률 분포가 현재 상태에만 의존하며 이전 상태와는 관계 없는 특성을 말합니다.

활률과정: 오토마톤 개념(시간의 경과에 따른 변화)에 '상태 변화가 일어날 확률' 을 더한 것입니다. 확률 과정의 특징은 시간의 경과나 상태 변화를 연속성이 없는 유한한 값으로 나타낸다는 것입니다.

마르코프 과정 Markov Process:  마르코프 성질이 있는 확률 과정을 의미합니다.

이산 상태 마르코프 과정: 셀 오토마톤의 상태 변화를 나타내는 데 사용합니다. 유한 개의 자연수가 띄엄띄엄 흩어져 있는 상태로 존재 하는 값으로 나타냅니다.

마프코프 연쇄 (Markov chain) :이산 상태 마르코프 과정에 셀 오토마톤의 시간 (연속성 없는 시간으로 표현)를 결합한 셀 오토마톤의 확률 과정을 망합니다.

 

마르코프 모델의 예:

마프코프 모델은 상태에 따라 비용을 설정하고 상태가 변화할 때 비용을 더해서 누적 비용을 추정하는 상황에 응용할 수 있습니다.

예: 광고의 열람 효과를 포함한 가치를 정상분포로 계산하는 것  등이 있습니다.

 

현재 상태에서 다음 상태로 변화할 확률을 전이확률이라고 하며 모든 전이 확률을 행렬로 나타낸 것을 전이행렬이라고 합니다.

 

04. 상태 기반 에이전트 

입력 데이터로 유한 상태 기계 안 상태를 변화시켜 시스템이 동작하는 상태 기반(구동형) 에이전트를 설명합니다.

환경 자체도 에이전트 라고 생각 할 수 있음

에이전트는 객체지향 개념으로 설명할 수 있는 상태 패턴을 이용할 수 있음

 

게임 AI

에이전트: 게임에 존재하는 개별 상태 기계를 총괄하는 시스템 

소프터웨어 에이전트 특성

1) 자율성(autonomy)

에이전트는 사람이나 다른 사물의 직접적인 간선 없이 스스로 판단해 동작하고 , 행동이나 내부 상태의 제어 권한을 갖습니다.

2) 사회성(social ability)

에이전트는 에이전트 통신 언어을 사용해 사람과 다른 에이전트들 사이에서 상호작용할 수 있습니다.

3) 반응성(reactivity)

에이전트는 실세계, 그래픽 사용자 인터페이스를 통한 사용자 , 다른 에이전트들의 집합, 인터넷 같은 환경을 인식하고 그 안에서 일어나는 변화에 적절히 방응합니다.

4) 능동성(proactivity)

에이전트는 단순히 환경에 반응해 행동하는 것이 아니라 주도권을 갖고 목표 지향적으로 행동합니다.

5) 시간 연속성(temporal continuity)

에이전트는 단순히 한번 주어진 입력을 처리해 결과를 보여주고 종료하는 것이 아닙니다. 에이전트 실행 후 백그라운드에서 잠시 쉬는 데몬(demon)같은 프로세스 입니다.

6) 목표 지향성(goal-orientedness)

에이전트는 복잡한 고수준 작업을 실행합니다. 작업은 더 작은 세부 작업으로 나누며 처리 순서 결정 등의 책임을 에이전트가 집니다.

 

이용자가 어떤 동작을 실행한 결과로 상태 기계에 변화가 일어나는 것을 게임에서는 이벤트라고 합니다.

에이전트는 동작하는 상태일 때가 많다는 점에서 상태 기반(구동형) 에이전트 state-driven agent라고 합니다.

 

보드게임 : 에이전트를 실제로 이용할 수 있는 대표적인 사례입니다.

 

보드게임의 게임 이론

게임하면서 일어나는 모든 상태를 계산할 수 있으면 완전 정보 게임이라고 합니다.

또한 의사 결정자 2명이 대전하면서 유연에 좌우되는 일 없이 게임 진행 상태가 정해지므로 상태를 예측할 수 있어 2인 제로섬 zero sum유한 확정 완전 정보 게임이라고도 합니다.

게임이론 - 완전 정보 게임  - 2인 제로섬 유한 확정 완전 정보 게임

             - 불완전 정보 게임 - 완비 정보 게임

                                      - 불완비 정보 게임

 

복잡하게 구성된 에이전트 사용

 

 

 

 

 

 

 

 

 

 

 

 

 

 

출처 : 처음 배우는 인공지능

반응형
반응형

규칙 기반 모델은 설정한 규칙에 맞게 입력 데이터를 자동으로 분석하는 추론 엔진이나 규칙 설정을 외부 저장 장치 등에 쌓는 지식 기반 모델에 이용합니다.

 

01. 규칙 기반 모델

사람이 하는 판단을 기계에게 맡기는 규칙 기반 모델을 설명합니다.

 

조건 분기 프로그램과 규칙 기반 시스템

규칙(조건 설정)을 사용해 조건 분기 프로그램을 실행하는 시스템을 규칙 기반 시스템이라고 합니다.

 

규칙 설계와 문제의 공식화

조건 분기의 기반이 되는 규칙은 사람이 미리 결정해두어야 합니다.

사람이 정답을 모르는 미지의 문제는 규칙 기반으로 대응할 수 없으므로 규칙을 설정할 때는 순서와 우선순위에 주의를 기울여야 합니다.

 

순서가 중요한 예: 온도에 따라 에어컨 바람 조절하기 

 

우선 순위가 중요한 예: 사용자 정보 비교 

보험 등 

 

의사 결정 트리의 구축

규칙을 바탕으로 그린 순서도로 구축한 이진 트리를 의사 결정트리 라고도 합니다.

 

02. 지식 기반 모델 

규칙 기반 모델을 이용해 규칙을 변경하는 지식 기반 모델을 설명합니다.

 

규칙이 늘거나 변하는 경우

사람도 검색할 수 있는 지식 기반 시스템

 

03. 전문가 시스템

전문가 시스템은 규칙 기반 모델을 이용하는 추론 엔진에 기반을 둠

전문가 시스템

 

추론 엔진의 종류와 기법

전문가 시스템이 규칙을 사용해 결과를 추론하는 프로그램을 추론 엔진이라고 합니다.

 

04. 추천 엔진

전문가 시스템의 하나로 쇼핑몰 사이트 등의 평가 시스템으로 이용하는 추촌 엔진을 설명합니다.

 

추천 엔진의 개념

 

콘텐츠 내용을 분석하는 추천 엔진

협업 필터링을 이용하는 추천 엔진

 

 

 

 

출처 : 처음 배우는 인공지능

반응형
반응형

01. 인공지능이란

인공지능: 사람처럼 행동하도록 만들어진 장치(또는 소프터웨어)

 

02. 인공지능의 여명기

튜닝테스트 - 기계인지 사람(생각하는 존재)인지를 판단하는 시험 

 

인공지능 용어는 1956년 열렸던 다트머스 회의에서 처음 언급되었다.

 

신경망 nerual Network

 

시냅스 가소성: 시냅스를 Synapic Plasticity은 시냅스를 통해 신경 전달 물질을 많이 전달하면 관계가 

강화되고 , 적게 전달하면 관계가 악화하는 현상입니다.

 

튜링 테스트와 인공지능

센서는 현재 시점에서 측정한 고도나 기상 상황(프로그램의 성능 측정과 동일) 등은 정확히 판단합니다.

 

튜링은 사람을 대신하는 기계의 답변이 지능을 갖고 사람의 답변과 구별되지 않는 시대가 올것 이로 생각하빈다.

 

튜링 테스트 

튜링 테스트는 기계인지 사람(생각하는 존재)인지를 판별하는 시험입니다.

 

03. 인공지능의 발전 흐름

1960~ 1980:  전문가 시스템과 1차 인공지능 붐

전문가 시스템은 전문가 실행하는 조건 판단을 프로그램화해 문제를 처리하는 시스템으로 유명한 점눈가 시스템으로는 

Dendral이 있습니다.

Dendral :인공지능 프로젝트

 

1980~ 2000년: 2차 인공지능 붐과 신경망의 암흑기

퍼셉트론의 다층화 

오차역전파법

 

2000~ 2010년: 통계 기반 머신러닝과 분산 처리 기술의 발전

 

통계 기반 머신러닝의 연구와 발전:

분류 

예측

머신러닝으로 처리 할 수 있는 데이터로 변환해 특징량 feature 추출

 

 

분산 처리 기술의 발전

 

분산 처리 기술과 신경망 연구의 결합

 

2010 년 이후 : 심층 신경망 기반 이미지 인식 성능 향상과 3차 인공지능 붐

 

다양하게 활용하는 인공지능 연구

자동차 업계 : 자율주행 기술

광고 업계 : 추천 시스템

비지니스 인텔리전스 도구 

챗봇

의료지원

로봇 산업

 

인공지능의 미래 - '의식'을 지닌 인공지능

 

빅데이터와 디지털 클론

기술적 특이점과 인공지능의 윤리적 관점

 

 

 

 

 

 

 

출처 : 처음 배우는 인공지능

반응형

+ Recent posts