728x90

게임을 이용해 인공지능 연구 이유

- 문제가 잘 풀렸는지 판단하기 쉬움

- 많은 지식이 필요없이, 이기는 위치를 탐색 알고리즘으로 찾으면 됨.

- 단순 탐색 알고리즘으론 힘듬.

 

 

최대-최소 탐색 min-max search

- 나는 최대한 유리, 상대도 최대한 유리한 수를 선택한다 판단.

- 각 노드에 가치 부여

- 최대화 : 최대의 가치를 갖는 후계 노드 선택. 현재 노드는 가장 큰 후계노드의 가치를 가짐.

- 최소화 : 상대는 나에게 가장 낮은 가치를 주는 노드 선택할것. 현재 노드는 가장 낮은 후계노드의 가치를 가짐.

- 최대, 최소화를 여러 단계 거쳐 나에게 유리한 수 선택

 

 

 

 

최대 최소 탐색 트리

- 상대방의 응수를 고려하여 결정하는 경우에 대한 트리

- 내가 A를 선택시 상대는 D 선택, 나는 그나마 다른 노드의 최소에 비해 가장 큰 가치를 갖는 J를 선택 할 수 있음.

 

 

 

몬테 카를로 탐색

- 기존의 게임 트리 탐색 : 경우의 수가 방대한 경우 경험적 지식으로 평가 함수 만들기 어려움.

- 의사 결정 문제에서 활용되는 경험적 탐색 알고리즘

- 탐색 공간 무작위 표본화로 탐색 트리 구성

 

 

몬테카를로 트리 탐색 절차

1. 트리는 점증, 비대칭적 방식으로 생성.

2. 매 반복시 루트 노드서 시작하여 적절한 자식 노드를 선택하는 과정을 반복.

3. 리프노드에 도달한 다음 자식 노드를 생성하여 확장.

4. 리프토드 경로 결정 정책은 탐사, 활용을 균형적으로 설계

  * 탐사 exploration : 검사하지 않은 영역을 확인

  * 활용 exploitation : 유망 영역 확인

5. 시뮬레이션 시행 : 새 노드 가치 평가 위하여 몬테카를로 롤아웃 수행. 

  * 몬테카를로 롤아웃 : 무작위 방식으로 게임 깥까지 진행.

6. 시뮬레이션 결과 시작 리프노드에서 루프노드까지 통계치 업데이트에 활용

 => 경험적 지식을 반영한 평가 함수를 사용하지는 않음.

7. 제한에 도달할떄 까지 반복. 도달 시 우수한 행동 선택

  * 제한 : 시간, 메모리, 반복 횟수 등

 

 

 

몬테카를로 트리 탐색 알고리즘

- 노드 n_i : 게임 특정 상태. 그 노드의 현재 가치 v_i, 노드 방문 횟수 N_i 등 포함.

- 루트 노드 하나인 트리로 탐색 시작하여 4단계 수행

1. 선택 : 선택 전략에 따라 깊이 방향으로 자식 노드 선택 반복. 

2. 확장 : 선택된 노드에 추가 행동하여 트리 확장

3. 시뮬레이션 : 확장된 노드에서 게임이 끝날떄까지 게임 진행(롤아웃).

4. 역전파 : 시뮬레이션 결과 시작 노드에서 루트노드까지 선택경로를 따라 업데이트

 

 

 

 

300x250

'인공지능' 카테고리의 다른 글

파이썬머신러닝 - 1. 기초  (0) 2020.11.23
패턴인식이론 - 1. 간단  (0) 2020.11.18
인공지능 - 6. 탐색 과정  (0) 2020.11.11
인공지능 - 5. 퍼지이론  (0) 2020.11.11
인공지능 - 4. 논리기반 지식표현  (0) 2020.11.11
728x90

그래프 탐색

- 문제에 대한 상대공간이 있으면, 해는 초기 상태에서 목표상태까지 연산을 반복하여 얻을 수 있음.

 

 

탐색 종류

- 맹목적 탐색 blind search : 목표 노드 위치와 무관한 순서대로 노드 확장. 소모적

- 경험적 탐색 heuristic search : 목표 노드와 관련된 정보나 경험적 정보를 이용한 탐색

  * 경험적 정보 heuristic information : 항상 옳지는 않지만 대부분 잘 맞는 정보

  임의경로 탐색 최적경로 탐색
맹목적 탐색 깊이우선 탐색
너비우선 탐색
균일비용 탐색
경험적 탐색 언덕오르기 탐색
최적우선 탐색
A* 알고리즘

 

깊이 우선 탐색 depth first search; dfs

- 해가 존재할 가능성이 있는한 앞으로 계속 전진하는 탐색

- 더 진행할수 없으면 다른 경로를 선택가능한 노드로 복귀하여 탐색 계속 =>백트래킹

 

 

너비 우선 탐색 breadth-first search, bfs

- 생성 순서에 따라 노드를 확장하는 방법

- 출발 노드에서 목표노드까지 최단길이 보장 -> 경로가 긴경우 탐색 가지가 매우 증가

 

 

균일 비용 탐색 uniform cost search

- 출발 노드서 경로비용이 최소인 노드를 확장시켜나가는 방식

 

 

 

 

경험적 탐색방법 heuristic search method

- 맹목적 탐색 방법의 한계 : 경로 찾는데 너무 많은이 노드 확장

- 경험적 정보로 보다 빠르게 탐색 진행하는 방법

- 바람직한 노드를 선택하기 위해 평가 함수 evaluation function 사용

 

 

언덕 오르기 탐색 hill climbing search

- 목표까지 경로비용 h(n)을 기준으로 노드 선택.

- 실제 h(n)을 구할수 없으니 예측치 hat{h}(n) 이용

   * hat{h}(n) 은 경험적 정보를 이용한 h(n) 예측치

 - 경로 비용이 작은 노드만 선택하여 지역적 최대치에 도달하나 전역적 최대치인지는 보장못함.

 

 

모의 담금질 simulated annealing

- 언덕 오르기 탐색이 지역 최대치에서 멈출수 있는 문제를 개선하기 위한 방법

- 가열하면 원자들이 움직이며 식으면서 더 낮은 에너지를 찾을 가능성이 높아지므로 모의 담금질이라 부름.

 

최적 우선 탐색

- 임의의 노드에 대한 평가함수 사용. 목표 노드까지 비용 예측치.(언덕 오르기 탐색과 동일)

- 언덕 오르기 탐색은 진행 방향의 후계 노드 중에서 가장 적합한 노드 선택

- 최적 우선 탐색은 전체 노드 대상으로 선택

 

 

A* 알고리즘

- 언덕오르기, 모의담금질과는 달리 출발 노드서 도착 노드까지 비용을 평가 함수로 고려

 ->  평가 함수 f(n) = g(n) + h(n)

    * g(n) : 출발노드서 n노드까지 비용

    * h(n) : 노드 n에서 목표노드 n까지 비용

- h(n)은 아직 탐색하지 못했으므로 계산하기 어렵거나 알 수 없음.

     -> 경험적 정보에 의한 예측 평가 함수

        hat{f}(n) = g(n) + hat{h)(n)

        * g(n) : 출발노드서 n노드까지 비용

        * hat{h}(n) : 노드 n에서 목표노드 n까지 비용

- hat{h}(n)이  잘 예측되어야 f(n)에 가까워져 효율적 탐색 수행.

 

300x250

'인공지능' 카테고리의 다른 글

패턴인식이론 - 1. 간단  (0) 2020.11.18
인공지능 - 7. 게임 트리  (0) 2020.11.11
인공지능 - 5. 퍼지이론  (0) 2020.11.11
인공지능 - 4. 논리기반 지식표현  (0) 2020.11.11
인공지능 - 3. 지식  (0) 2020.11.11
728x90

오늘 방통대 인공지능 과목 내용들을 대강 훌터본것같다.

 

내가 처음 인공지능을 공부했을 때 

 

"밑바닥 부터 시작하는 딥러닝" 책을 보면서 시작했었다.

 

 

그 책은 수학적인 이론 내용들은 최대한 줄이고,

 

개념적인 내용과 구현 위주다 보니

 

인공지능의 범위, 종류

 

기초적인 퍼샙트론의 개념부터

 

신경망을 만들어가고, 학습시키고

 

효과적으로 학습하기 위한 다양한 기법 

 

그리고 당시 딥러닝 기술 등을 알아봤었다.

 

 

 

 

수학 관련 내용이 없다보니 너무 좋긴 했으나

 

mnist 데이터 셋을 분류하는 신경망 만들고,

 

아무 CNN이나 가져와서 이미지 인식을 해보는건 좋은데

 

인공지능으로 뭘 해볼려고 할수가 없었다.

 

 

 

 

그 다음으로는 텐서 플로우 책을 봤었는데

 

쌩으로 신경망을 만들어주는게 아니라

 

함수 하나하나가 신경망 층이되서 

 

밑바닥부터 시작하는 딥러닝 책에서 설명해주는 쌩 코딩보다는

 

훨씬 쉽게 신경망을 만들수 있었다.

 

거기에 대한 이미지 관련 예제들을 해보곤 했었다.

 

 

 

 

그 다음에는 케라스 책을 봤었는데

 

케라스는 텐서 플로보다 더 간단하게 신경망을 만들수 있었으나

 

텐서플로 책과 비슷한 예제만 몇번 해보고 끝났었다.

 

 

 

 

 

 

당시 내가 궁금했던 부분은

 

단순히 여러가지 신경망을 예제만 따라치면서 구현하고 성능 평가하고 끝내기 보다는

 

다른 신경망들을 비교하면서, 모델을 조정하면서 어떻게 성능이 개선되었는지와

 

영상 분할 부분을 제대로 공부하고 싶었는데

 

이런 내용들은 시중 책으로는 잘 나오지가 않더라.

 

특히 영상 분할 같은 경우는 몇 페이지에 설명, 예제 코드 주고 끝일때가 많았다.

 

 

 

 

 

그 이상의 영역은 논문들을 봤어야 했는데

 

당시 수학을 공부하지 않은 상태로는 논문을 제대로 이해할 수도 없었고

 

 

 

 

 

최근 확률, 통계, 다변량 분석 등을 공부하면서

 

이전에 매번 우도, 우도비, 최대우도법 내용들을 볼때마다 번역체 때문에 이해  하지도 못했던것과 달리

 

우도를 가능도라고 배우니까 그동안 답답하던 최대 우도법이 이해가 되었고,

 

 최소 제곱법 또한 R을 이용해서 실제 데이터를 가지고 몇번 연습하면서 좀더 명확하게 알수 있었다.

 

 

 

 

 

 

사실 가장 먼저 공부했어야만 하는 과목인 인공지능을

 

늦었지만 컴퓨터비전, 딥러닝, 패턴인식, 확률, 통계를 공부하고 보니

 

전보다는 많이 이해하게 된거같다.

 

 

 

300x250

'그외 > 로그' 카테고리의 다른 글

과제 마무리  (0) 2020.11.19
시험 과제를 하면서  (0) 2020.11.17
시험 준비와 근황  (0) 2020.11.09
공부해나간 과정  (0) 2020.11.01
공부 고민  (0) 2020.08.16
728x90

논리의 의미

- 사고 과정

 

 

논리학의 두종류

- 인식론적 논리학 : 인식의 본질, 과정 연구 -> 철학, 언어, 인지심리학 으로 발전

- 형식논리학 :  삼단논법 기반 사고, 정확한 전제(명제)가 주어질때 정확한 결론을 얻을 수 있음. 

       -> 형식적 연역을 기호로 표현하여 기호논리학으로 발전. 논리 연산자와 부울대수가 만들어짐.

 

 

퍼지 논리의 시작

- 명제논리와 술어논리를 많이 사용. 자연언어를 기호화하여 형식적으로 처리하는 목적임. 표현력에 제한

  -> 논리 연산자가 제한됨. 표현(명제)가 정확여부를 참/거짓 2개의 진리값으로 취급하기 때문.

- T/F 2개의 진리값 이외의 모호함을 취급하는 퍼지논리가 연구됨.

 

 

 

이진 논리

- 기호 논리학에서의 명제 : 한 판단을 포함한 문장/정보

- 기본 명제 : 분해 불가한 최소 단위 명제.  p, q, r(이 기호는 명제 상수, 원소식)

   ex. p = 철수는 한국인이다. , q = 닉은 미국인이다.

- 합성명제 : 기본 명제를 결합한 명제

  ex. a = 철수는 한국인이고, 닉은 미국인이다.

 

 

 

조건 명제

- 기호 논리학에서의 논리 기호 : 3가지 - 선언(또는, v) 연언(그리고, ∧), 부정(아니다, ~)

- 조건명제기호 : 논리 기호 이외의 결합 기호. -> (if then)

- 조건 명제 예시

  p : 비가 온다.

  q : 소풍 취소한다.

  p -> q : 비가 오면 소풍 취소.

 

 

명제 논리식 정의

- 아래는 기본 명제와 논리 기호로 명제 논리 정형식을 만드는 규칙

 1. 기본 명제 p, q, r은 논리식

 2. p가 논리식 일때, ~p도 논리식

 3. p, q가 논리식 일떄 p -> q도 논리식

 4. 1 ~ 3으로 얻는 식만 논리식

 

 

항진식

- 항상 참이 되는 논리식

ex. H = p v ~p

 p = 나는 부자다. ~p = 나는 부자가 아니다.

 -> H = 나는 부자거나 부자가 아니다. 

 => H는 항진식

 

 

연역

- 알고있는 전제로 결론을 구하는 과정

ex. alpha와 alpha -> beta가 성립되면 beta가 성립된다.(긍정논법)

 

 

 

 

 

 

 

 

명제 논리의 과정과 한계

1. 명제 논리는 형식 논리학에 기반

2. 명제 논리는 복잡한 문장, 합성 명제를 기본 명제로 분할

3. 삼단 논법으로 새로운 지식 추론.

- 명제 논리 한계 예시

    p : 소크라테스는 사람

    q : 플라톤은 사람

   -> 명제 p, q만으로 모두 사람이라는 공통점을 찾을수가 없다.

     r : 모든 사람은 죽는다

    -> p, q, r로 소크라테스와 플라톤은 죽는다는 사실 유도 불가

 

 

술어 논리

- 명제를 서술하는 술어와 수식 받는 객체로 구성. 술어(객체) 형태

- 술어 논리 예시

  1. 소크라테스는 사람 -> man(SOCRATES)

  2. 플라톤은 사람 -> man(PLATO)

  3. 모든 사람 죽음 -> ∀x(man(x) -> mortal(x))

 => 이 경우 소크라테스와 플라톤은 사람이므로 죽는다는 사실을 유도할 수 있다.

 

술어 논리 기호

- ∀ 천칭기호 universal quantifier : ∀x시, 모든x에대하여

- ∃ 존재기호 existential quantifier : ∃x시,적어도하나x가존재함

* quantifier 한정자 : 범위를 한정하는 연산자

- 1차 논리 : 한정 기호를 사용하는 술어 논리

 

 

 

 

300x250

'인공지능' 카테고리의 다른 글

인공지능 - 6. 탐색 과정  (0) 2020.11.11
인공지능 - 5. 퍼지이론  (0) 2020.11.11
인공지능 - 3. 지식  (0) 2020.11.11
인공지능 - 1. 개요 ~ 탐색  (0) 2020.10.15
패턴인식 - 9. 선형 판별 분석  (0) 2020.08.06
728x90

데이터, 정보, 지식, 진리의 차이

- 데이터 : 관측 센서로 취득한 값

- 정보 : 잡음과 불필요한 데이터를 제거한 데이터

- 지식 : 정보의 개념, 체계화

- 진리, 정의 : 지식을 보편/이론화 한 결과물

 

지식기반 시스템

- 인공지능 시스템의 문제 풀이 : 지식의 표현/활용이 중요

   <-> 일반 프로그램 : 데이터와 처리 규칙(프로그램)

- 문제 영역 관련 지식(지식 베이스) + 지식 기반 문제 풀이 기능(추론 기관)으로 구성

  

 

지식의 표현

- 문제 해결을 위한 문제 기술

- 컴퓨터에서 실행가능한 형태

 

인공지능 프로그램

- 일반 프로그램과 달리 상황에 대해 어느 지식을 사용할 지 동적으로 제어

 -> 컴퓨터 내부서 지식 저장, 처리 메커니즘이 핵심

- 모든 문제에 통일적으로 표현할 수 있는 방버은 존재 하지 않음. 

 -> 문제의 논리 구조를 분석하여 표현방법을 고려함

 

 

 

지식 사상

- 인공지능 기법으로 문제 해결 -> 많은 지식 + 해를 얻기위해 지식 처리 메커니즘 필요

- 사람이 사용하는 지식을 컴퓨터에서 처리하기 위해 컴퓨터 내부 표현 형태로 사상

- 추론 결과를 역사상하여 결론을 얻을 수 있음.

 => 지식 표현 시스템이 사상과 역사상을 명확히 하느냐에 따라 표현에서 중요한 요소

 

지식 사상의 예시

- 논리를 이용한 사실 표현

 -> 철수는 사람이다. ( 초기사실)

 -> man(철수) (초기 사실 내부 표현)

 -> 모든 사람은 생각한다 (추론 매커니즘)

 -> think(철수)  (추론 사실 내부 표현)

 -> 철수는 생각한다. (추론 사실)

 

 

지식 분류하기

- 문제에 대한 지식 : 문제 관련 사실로 얻는 지식

- 대상 세계에 성립하는 규칙, 법칙 : 지식 베이스의 지식을 맹목적 사용시 탐색 가지가 크게 증가하게됨

   => 효율적 탐색을 위해 성립 규칙과 법칙 이용

 - 메타 지식 : 지식에 관한 지식으로 문제 해결시 지식을 아떻게 활용할 것인가를 말함.

    => 수집 지식으로 추론 방법 제어시 사용

 

 

 

 

지식 표현 조건

- 특정 분야의 복잡한 정보를 구조화 하여 지식으로 나타내기 위해 다음 조건이 요구됨

- 표현 방법의 적합성 : 모든 지식 정확히 표현

- 추론 정합성 : 표현 구조를 처리하여 새 지식을 유도하기에 용이해야함

- 추론 효율성 : 부가 정보를 지식표현 구조에 적절히 포함시킬 능력 필요

- 지식 획득 능력 : 지식을 쉽게 획득할 수 있는 능력 필요. 지식 베이스에 새 지식 삽입, 프로그램이 스스로 지식 취득

 

 

 

 

지식 표현 유형

1. 절차적 지식 procedural knowledge 표현방법

 - LISP(list processing) 같은 프로그램 언어로 명령어 집합 표현

 - 지식 사용 = 프로그램 실행 -> 지식 제어 정보가 지식에 포함 -> 효율적이지 못함

2. 선언적 지식 declarative knowledge 표현방법 

 - 독립적 지식으로 구성, 지식 운용 목적 프로그램으로 추론에 사용

- 지식은 나열, 사용방법은 제공안됨 ->  지식 이용 방법을 가진 프로그램이 필요

 

 

 

논리를 이용한 지식 표현

1. 명제 논리 proportional logic

- 명제를 기호 형태로 표현.

 *명제 proposition : 참, 거짓을 판단할수 있는 문장

- 예시

  이것은 유리이다. = GLASS

  유리라면 잘 잘린다. = GLASS -> FRAGILE

- 논리 연산자

- 긍정 논법 nodus ponens : X, X -> Y 두 명제로 결론 Y라는 명제를 얻는 과정

 

2, 술어 논리 predicate logic

- 명제 논리를 확장. 술어 + 객체 = 한 문장

 ex. 명제 "강아지는 포유류이다."가 있을떼, "강아지(DOG)"이라는 객체가 "포유류(mammal)" 술어 수식받음.

 => mammal(DOG) 과 같이 표현 가능

- 변수와 함수 사용 -> 문장은 참조하는 변수값에 따라 참/거짓이 됨.

- 한정자 quantifier: 변수 범위 지정

=> 술어, 상수, 변수, 한정자, 논리연산자를 문법에 맞게 만든 문장을 정형식 well-formed formulas:wff

 

 

 

논리 표현 지식 이용

- 지식 베이스에서 단위 지식 검색 : 매칭이나 해식 사용

- 함축된 지식의 경우 : 명확하게 기술되지 않은 정리 증명의 경우 탐색 가지가 크게 증가

- 논리 기반 추론은 명확한 추론 규칙 이용 -> 결과는 항상 참, 저장 지식은 독립, 새 사실이 발견시 지식 양은 증가

 

 

 

규칙을 이용한 지식표현(생략)

 

 

시맨틱 넷 기반 지식 표현

1. 시맨틱 넷 semantic net

- 규칙 기반 지식 표현법의 문제점 : 융통성 적고, 구조화 되지 않음 -> 모형화나 특정지식 표현 힘듬

- 시맨틱 넷 : 지식 사이 관계(순서) 표현. 네트워크 기반 지식 표현 법, 노드 집합과 노드를 연결하는 아크 집합으로 구성

- 노드 : 객체 , 개념, 사건

- 아크 : 노드 사이 관계 (isa - is a, ako - a kind of, has-part 등)

 * isa는 하나의 인스턴스, ako는 어느 부류의 한 종류, has-part 객체의 구성 일부

2. 속성 상속 property inheritance

- 위 예시에서 "꼬리"는 "개" 객체의 속성인데 하위인 "복슬이"가 받음

- 속성 상속 : 상위 노드의 속성을 하위 노드가 따르는 것

 

3. 중앙 집중 지식 장점

- 지식 구성이 쉬움

- 표현 지식이 잘못된경우 쉽게 수정

- 시간 흐름에 따라 최신 지식 유지 쉬움

- 지식 분배가 자동적으로 수행

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

전문가 시스템 시작

- 1960년대 인공지능 학자들이 일반 문제 해결을 위한 일반 문제 풀이기 GPS general problem solver를 만들고자 함.

  -> 인간 사고 과정을 시뮬레이션하려 하였으나 일반 해를 구하기가 어려웟음.

- 특정 분야 문제를 해결할수 있는 구체적인 프로그램 만드는 방법 연구

- 1970년대 : 문제 정형화 표현 기술, 기억 용량 사용시간을 줄이며 문제 해결하는 탐색 방법 연구

 -> 문제 정형화, 추론과정 보다 응용 분야의 지식 표형 방법이 중요함을 찾음.

- 전문가 시스템 expert system : 전문가의 지식, 전략을 시뮬레이션하여 의사결정 지원하는 시스템

- 지식 공학 : 전문가 시스템을 만드는 분야

- 지식 공학자 : 전문가 시스템을 만드는 사람. 해당 분야의 전문가로 지식, 문제 해결전략을 체계적 표현함.

 

 

자료처리 프로그램과 전문가시스템 차이

자료처리 프로그램 전문가 시스템
자료 표현과 이용
알고르짐
반복 처리
다량 자료를 효율적 처리
지식 표현, 이용
경험적 지식
추론적 지식
다량의 지식 베이스를 효율적 처리

 

전문가 시스템 기능

- 해석 : 입력 자료로 상황 추론

- 예측 : 상황으로 발생 가능 결과 예측

- 진단 : 관측 자료로 이상상태진단

- 설계 : 제약조건내 가능한 설계 구상

- 그외 계획, 모니터링, 디버깅, 교육, 제어 등

 

 

전문가 시스템 구성

- 지식 베이스와 추론기관 그리고 사용자 인터페이스로 구성

- 지식 베이스 : 문제 영역 관련 지식

- 추론 기관 : 문제 해결 목적 지식, 프로그램 제어 + 규칙 해석기(새로운 지식 추론을 위해 규칙 적용 결정) + 스케줄러

 

 

전문가 시스템 개발

1. 문제 정의 : 개발 목적, 문제 특성.

  ex. 문제 유형/범위, 참여 인력, 전문가, 소요 시간, 컴퓨터 성능

2. 개념 설정 : 기본 개념 정의, 해법

  ex. 세부작업, 전략, 제약조건

3. 정형화 : 지식 수집 및 지식 표현

  ex. 지식 표현 방법 설정, 적합한 개발도구 사용

4. 구현 : 프로그래밍

  ex. 자료구조, 추론과정, 프로그램 제어, 하부 시스템 통합 고려

5. 검증 ; 요구사항 만족 여부 검증

  ex. 개발자에게 개선방향 제시 필요

 

지식 공학자의 역활

 

300x250

'인공지능' 카테고리의 다른 글

인공지능 - 5. 퍼지이론  (0) 2020.11.11
인공지능 - 4. 논리기반 지식표현  (0) 2020.11.11
인공지능 - 1. 개요 ~ 탐색  (0) 2020.10.15
패턴인식 - 9. 선형 판별 분석  (0) 2020.08.06
패턴인식 - 8. 주성분분석  (0) 2020.08.05
728x90

 

 

 

300x250
728x90

300x250

+ Recent posts