1. 콜백과 콜백 헬

콜백함수 다시보기

: 비동기 함수 - 콜백함수 사용

 비동기 동작과 콜백

: 비동기 동작의 연속

: 콜백의 연속 호출

: 이미지 업로드 후 데이터 베이스에 저장

: 다수의 이미지에서 썸네일 생성 후 업로드

: 콜백안에 콜백.... 콜백지옥에 도착하게 된다.

2. Async

비동기동작의 흐름제어

: Async모듈

: 행위 순서 제어

: series, seriesEach // parallels // waterfall

: 콜랙션 (배열, 객체)

: each, forEachOf, map, filter

Async의 순차 실행

> async.series{[태스크1,태스크2...],function(){완료콜백}}

: 콜백호출 - 다음 태스크로 진행

: 태스크 완료 -다음 태스크 실행

: 완료 콜백으로 동작 결과 전달

: 콜백을 공유한다.

: 테스크 에러 발생 - 에러 전달

: 다음 태스크 실행안함

: 마무리 콜백으로 에러 전달

: 연속 동작 마무리

: 마무리시 결과가 배열로 전달됨.

waterfall

: 다음 태스크로 전달하라 값을 콜백의 파라미터로

: 태스크 함수의 파라미터로 전달 이전 태스크의 값 전달

parallel 

: 동시 동작하게 됨.

콜렉션과 비동기 동작

: 콜랙션 내 각 항목을 사용하는 비동기 동작

: 다수의 파일을 비동기 API로 읽기

: 다수의 파일을 비동기 API로 존재하는 지 확인하기

: 비동기 순회 동작

: each, map, filter, reject 등등...

: each

: each(arr, iterator, callback){}

3. Promise

: 비동기 동작의 흐름제어

: ES6에 추가됨.

Promise 상태

: pending - 전, fulfilled - 성공, rejected - 실패

Promise 를 사용하는 태스크

: function task(){
    return new Promise(fucntion(){})
}

: 이 같은 형태로 Promise를 반환하는 함수를 만들어 사용함으로써 더 세련되게 사용한다.








'프로그래밍 > Nodejs' 카테고리의 다른 글

HTTP 서버  (0) 2017.04.16
http 통신  (0) 2017.04.16
NPM을 이용한 모듈관리  (0) 2017.04.15
Node.js 모듈  (0) 2017.04.14
Node.js 개요  (0) 2017.04.14

npm

: npm 홈페이지

: 모듈검색, 모듈 상세정보, 모듈 설치 방법, API설명, 예제

: 패키지 매니저

모듈

: 패키지 매니저 : npm

: 모듈 설치, 삭제

npm 주요 옵션

- init : 패키지 준비 

- install : 패키지에 필요한 모듈 설치

- install 패키지명 : 개별 패키지 설치

- list : 설치된 모듈 목록 보기

- info : 모듈 정보

- search : 모듈 검색

- update : 모듈 업데이트

- uninstall - 모듈 삭제

모듈 설치

-전역설치

: 한번설치로 모든 프로젝트에서 사용

: 라이브러리 폴더

: 관리자 권한 필요 -g 옵션

- 지역설치

: 프로젝트마다 설치

: 현재폴더더내 node_modules

전역모듈 vs 지역모듈

: 지역모듈 권장

: 모듈의 버전을 각 프로젝트 별로 관리할 수 있다.

: 유틸성 라이브러리는 전역설치 권장

2. 패키지 정보

패키지 설정 파일

: package.json

: 패키지에 대한 정보를 입력

: 의존성을 추가할 수 잇음

: 설치시 --save 옵션을 추가하면, 의존성 정보를 기록하여 준다.

: npm install // npm update ==> 패키지에 기록된 모듈을 설치/업데이트

3. 확장모듈 : nodemon

nodemon

: 소스 코드 수정후 재시작

: 동작멈추기, 다시 시작

: 수정 후 자동 재시작

: nodemon source.js

: 글로벌로 설치

: 관리자 권한 필요

4. 모듈만들기

모듈만들기

: 소스코드 분리

: 모듈

: 모듈 작성방법

: module.exports 객체에 하나씩 추가하는 방식 // module 생략가능

: exports하지 않은 함수는 사용 불가

: exports에 바로 넣을 경우 하나만 export할 수 있음.

: 모듈 사용하기

: 모듈 로딩 : require

: require('./greeting.js')

: 모듈은 캐시가 된다.

: 다시 로딩하더라도 똑같은 것을 가리킨다.



'프로그래밍 > Nodejs' 카테고리의 다른 글

HTTP 서버  (0) 2017.04.16
http 통신  (0) 2017.04.16
흐름제어 - 콜백, Async모듈, Promise  (0) 2017.04.15
Node.js 모듈  (0) 2017.04.14
Node.js 개요  (0) 2017.04.14

Node.js 모듈

1. 기본모듈

: Node.js 와 함께 설치

: 별도의 설치 과정 불필요

* 주요 기본 모듈

- 프로세스 환경

: os, process, cluster

- 파일과 경로, URL

: fs, path, URL, querystring, stream

- 네트워크 모듈

: http, https, net, dgram, dns

2. 전역 객체

: global 모듈에 속해 있는 것들 // global 생략가능

: 별도의 모듈 로딩 없이 사용

* 주요 전역 객체

: process, console, Buffer (클래스), require, _filename, _dirname, module exports, Timeout 함수

* 전역객체 : process

: 애플리케이션 프로세스 실행정보

- env : 애플리케이션 실행 환경

- version : Node.js 버전

- arch, platform : CPU와 플랫폼 정보

- argv : 실행 명령 파라미터 

: 이벤트

- exit : 앱 종료 이벤트

- beforeExit : 종료전 발생 이벤트

- uncaughtException : 예외처리 되지 않는 예외 이벤트

: 함수

- exit : 앱 종료

- nexTick : 이벤트 루프 내 동작을 모두 실행 후 콜백 실행 

3. 타이머 함수

: 지연동작 : setTimeout

: 반복동작 : setInterval

: 일정 시간 뒤 호출

: setTimeout(callback, delay, arg...)

: clearTimeout()

: 파라미터

: callback : 함수형태

: delay, arg

: 반복

: setInterval(callback, delay, arg)

4. 콘솔

* 콘솔

: 로그 남기기

: 실행 시간 측정

* 수준별 로그 남기기

: console.log, console.info, console.warn, console.error

* 객체형 출력

> console.log('obj:' + obj) // [object Object]

> console.log('obj:', obj) // {name : 'IU', job: 'Singer'} 

* 커스텀 콘솔

1. 콘솔 타입 로딩

2. 콘솔 객체 생성

3. 파라미터 : 출력 스트링

* 파일로 로그를 남기는 커스텀 콘솔

> var output = fs.createWriteStream('./stdout.log');

> var errorOutput = fs.createWriteStream('./stderr.log');

> var logger = new Console(output, errorOutput);

* 실행 시간 측정

: 시작 시점 설정하기

> console.time(TIMER_NAME)

: 종료시점, 걸린시간 계산해서 출력

> console.timeEnd(TIMER_NAME)

5. 유틸리티

> var util = require('util')

: 문자열 포멧, 상속, is 함수(deprecated)

* 상속

: util.inherits(자식생성자, 부모 생성자)

6. 이벤트

: 이벤트 다루기 : EventEmitter

: 이벤트를 다루는 기능 제공

* Node.js 앱의 이벤트들

: 이벤트 예

: 클라이언트의 접속 요청

: 소켓에 데이터 도착

: 파일 오픈/읽기 완료

: 이벤트 처리

: 비동기 처리

: 리스너 함수

* 이벤트를 다룰 수 있는 타입 : Readline 모듈

* 타입에 정의된 이벤트 다루기

: 이벤트 리스너 함수 등록

> emitter.addListener(event, listener)

> emitter.on(event,listener)

> emitter.once(event,listener)

: 이벤트 리스너 함수 삭제

>emitter.removeListener

>emitter.removeAllListener

: 최대 이벤트 핸들러 개수(기본10개)

> 조정가능

* 이벤트 발생

: 이벤트 발생시키기

: emitter.emit(이벤트이름, arg...) // 호출결과 : true(이벤트 처리),false(이벤트처리안됨)

* 커스텀 이벤트

> var customEvent = new event.EventEmitter() // 이벤트 이미터에 on을 통해 추가해서 정의해두고, emit을 통해 이벤트를 활성화 시켜야함.

* 커스텀 이벤트, 상속

> var Person = function(){}

> var util = require('util')

> var EventEmitter = require('events').EventEmitter

> util.inherits(Person, EventEmitter)

* 꿀팁!

: 에러처리

: 이벤트 리스너의 콜백함수는 error, result로 구성되기 때문에, error코드에 대한 예외처리를 먼저 작성하고 result를 작성하는 구성이 적당하다

모듈2

1. 경로다루기

* path 모듈 : 파일경로 다루기

: 경로 정규화, 경로생성, 디렉토리/파일 이름 추출, 파일 확장자 추출

* 경로 정보

: 현재 실행파일 경로, 폴더 경로

: 전역객체 - _filename, _dirname

* 경로 다듬기

>path.normalize()

* 경로 구성 요소

: path.basename() : 파일 이름, 경로중 마지막 요소

: path.dirname() : 파일이 포함된 폴더 경로

: path.extname() : 확장자

: path.parse : 구성요소 객체를 얻을 수 있음

* 경로 만들기

: pathUtil.sep, pathUtil.join(), pathUtil.format()

2. 파일시스템 다루기

: 파일 시스템 모듈 : fs

* 주요기능

: 파일 생성/읽기/쓰기/삭제, 파일 접근성/속성, 디렉토리 생성/읽기/삭제, 파일 스트림

* 특징

: 비동기와 동기 방식 함수 모두 제공

* 비동기식/동기식 API

: 에러 처리 방법

: 동기식 - try-catch 사용

: 비동기식 - 콜백함수의 에러 파라미터를 사용

* 파일 다루기

: 파일 디스크립터

: fd를 사용

: fs.openSync를 통해 얻어온다.

: r,w,a플래그를 통해 속성정할 수 있음

: fs.close를 통해 닫아주어야 함.

: 파일 경로

: filename사용

* 파일 읽기

> fs.read(), fs.readFile(), fs.readFileSync()

* 파일 종류

: 문자열 읽기 - 인코딩해야함, 바이너리 읽기 - buffer

* 인코딩 설정안하면 buffer

* 파일 상태 확인

> fs.access(Sync) : 파일 접근 상태 얻기

> fs.stat(Sync)    :    파일 상태 얻기

: 파일 상태 확인 후 읽기 하는 방법을 쓰자

* 파일에 저장

> fs.write, fs.writeFile.... : 파일 생성해서 쓰기

> fs.appendFile : 파일에 추가, 없다면 생성

> fs.unlink, fs.unlinkSync : 파일 삭제, 파일이 없으면 에러

* 디렉토리 생성/삭제

> fs.mkdir // fs.rmdir

* 파일스트림

> fs.createReadStream

3. 버퍼

: 바이너리 데이터를 다루는 모듈이다.

: global 이므로 별도의 로딩 불필요

: var fileBuffer = fs.readFileSync('image.jpg'); // 파일에서 읽기

: socket.on(,function(data){data가 버퍼})

: 생성후 크기 변경 불가

: 버퍼를 통해 문자열을 다양한 형태로 인코딩할 수 있다.

: 버퍼에 쓸때에는 버퍼의 크기까지만 써진다.


모듈3

1. 스트림

: 데이터의 전송흐름

: 콘솔 입력/출력

: 파일 읽기/쓰기

: 서버/클라이언트 - 데이터 전송

: 스트림을 다루기 위한 추상 인터페이스

: 다양한 스트림을 같은 인터페이스로 다룰 수 있다.

: 읽기,쓰기,변환 스트림이 존재함.

* Readable Stream

: 읽기 스트림

: flowing mode

: 데이터를 자동으로 읽는 모드, 데이터 유실의 가능성 존재

: paused mode

: 데이터가 도착하면 대기, read()함수로 읽기

> readable.read / setEncoding / pause/ resume/ pipe/ unpipe

: 이벤트

: readable - 읽기가능, data - 읽을수 있는 데이터 도착, end, close, error

: flowing mode

: data 이벤트 구현, pipe 연결, resume 호출

* Writable Stream

: 데이터 출력

: http 클라이언트 요청을 보낼 때, http서버의 응답을 보낼때, 파일 쓰기 스트림, tcp소켓

: 이벤트

: drain - 모두 보냄, error, finish, pipe, unpipe

* 표준 입출력 스트림

: process.stdin : 콘솔 입력

: process.stdout : 콘솔 출력

* 스트림 연결

: 스트림 연결과 해체

: 연결 이벤트

: 스트림 연결


2. URL 다루기

* 네트워킹

: 네트워킹의 시작

: 서버의 주소, 요청 위치, 파일의 위치

* URL

: 프로토콜, 호스트, 포트번호, 경로, 쿼리, 프래그먼트 등등...

: URL 모듈

* URL 분석하기

: url.parse()

* URL과 쿼리 문자열

* URL 인코딩

: urlencode

3. 쿼리 스트링

: URL 외에도 사용, HTTP 메시지 바디로 정보를 전달할 떄도 사용

: require('querystring')

: 쿼리스트링의 배열    

: group = d & member = 5 & member = 5 ...

: 객체를 쿼리 스트링으로 만들 수 있음.

4. 클러스터

: 여러 시스템을 하나로 묶어서 사용하는 기술

: 멀티 프로세스, 멀티 코어

: 노드 어플리케이션 : 1개의 싱글 쓰레드

: 멅티코어의 장점을 살리기 위해서는 클러스터를 사용해야 한다.

: 클러스터 사용시 포트 공유 - 서버 작성 편리

: 코어의 개수만큼 사용

* 클러스터

: 마스터, 워크 프로세스로 구성

: 마스터

: 메인 프로세스, 워커 생성

: 워커

: 보조 프로세스, 마스터가 생성

* 클러스터 모듈

: require('cluster')

: cluster.fork() // 클러스터 생성

: cluster.isMaster/isWorker 로 클러스터 확인

* 클러스터 이벤트

: 마스터의 이벤트

: fork, online, listening, disconnect, exit

: 워커의 이벤트

: fomessage, disconnect

* 마스터와 워커 분리

: 별도의 파일로 분리하기

> cluster.setupMaster

: exec: 워커파일




'프로그래밍 > Nodejs' 카테고리의 다른 글

HTTP 서버  (0) 2017.04.16
http 통신  (0) 2017.04.16
흐름제어 - 콜백, Async모듈, Promise  (0) 2017.04.15
NPM을 이용한 모듈관리  (0) 2017.04.15
Node.js 개요  (0) 2017.04.14

1. Node.js 개요 

1. Node.js 소개

: 2009년 Ryan Dahl 이 개발

: 자바 스크립트 언어, 크롬 V8 엔진

: 싱글 쓰레드, 비동기 I/O, 이벤트 기반 => 네트워크 애플리케이션에 적당함, 서버

: 서버는 디스크에 저장된 파일을 읽어야 되는데, 동기식 IO에서는 보통 멀티 쓰레드를 사용한다.

: 멀티쓰레드는 어려운데 노드는 비동기 I/O 이기 때문에 훨씬 쉽고, 성능이 좋다.

: 아톰도 노드 기반이다.

* 비동기 I/O

: 시간이 걸리는 I/O 에서...

: 하드디스크 접근, DB 서버, 네트워크를 통한 다른 서비스 접근 등...

: 동기식은 I/O가 끝날때까지 대기

: 비동기식은 I/O가 끝날때까지 대기하지 않음

* 비동기 I/O의 장점

: 성능상, 메모리 관리상 유리하다.

* Node.js의 장점

: 싱글쓰레드, 비동기 I/O, 간단한 구조의 경량 프레임워크와 풍부한 라이브러리

: 서버와 클라이언트에서 사용하는 언어가 같다

* Node.js 권장 분야

: 실시간 소셜 네트워크 서비스

: 데이터 중심의 서비스

: IoT 기기 연동

* 아키텍처

: 상위레벨 : 자바스크립트

: 로우레벨 : C

: 바인딩, v8 엔진, 쓰레드풀, 이벤트 루프

* 버전 구성과 지원

: Node.js 버전을 두단계로 진행

: 짝수버전(stable), 홀수버전(Unstable)

2. 프로그래밍 모델

: 동기(Synchronous)와 비동기(Asynchronous)의 차이는 무엇일까?

- 실행기 끝나고 다음 실행        - 실행 결과가 끝날때 까지 기다리지 않는다

* 콜백함수로 비동기를 구현한다.

5. 도큐먼트

* 모듈

: Node.js 간단한 구조, 필요한 모듈을 로딩

: 모듈 : 다른언어의 라이브러리에 해당

* 모듈

: 클래스, 메소드, 이벤트, 모듈함수

* 모듈로딩

: require('모듈이름') // 절대경로 혹은 상대경로

: 모듈 종류

: 기본모듈 - 설치 불필요 // 확장모듈 - npm으로 별도 설치

* 모듈로딩위치

: Node.js 라이브러리 디텍토리

: 확장모듈

: 같은폴더, node_modules 이름의 폴더, 상위 폴더의 mode_modules

* 모듈사용

1. 객체생성

2. 메소드 사용

* 이벤트

: 이벤트 - 이벤트 핸들러

: .on(이벤트이름, 리스너함수)

* 모듈함수

: 객체 생성 없이 모듈에 직접 사용 




'프로그래밍 > Nodejs' 카테고리의 다른 글

HTTP 서버  (0) 2017.04.16
http 통신  (0) 2017.04.16
흐름제어 - 콜백, Async모듈, Promise  (0) 2017.04.15
NPM을 이용한 모듈관리  (0) 2017.04.15
Node.js 모듈  (0) 2017.04.14

Regression 모델

: 해당 모델을 학습한다는 것은 선형의 기울기를 찾는 것

: 세상의 많은 것들이 Linear하게 표현될 수 있기 때문에 의미가 있음.

1. 어떤 선이 가장 좋은가?를 찾아야함.

: 실제 데이터와 가설과의 거리를 계산한다. Cost Function(Loss Function)

: (H(x)-y)^2


:



아래 URL의 강의를 필기한 내용입니다.

https://www.youtube.com/watch?v=Hax03rCn3UI&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=4

시작과 XOR 문제

궁금적인 꿈 : 생각하는 기계

: 인간의 뉴런을 지켜보니 생각보다 너무 단순하다.

: 신호가 임계치를 넘지 못하면 활성화되지 않고 넘으면 활성화되는 단순함.

: 이걸 본 사람들이 기계적으로, 수학적으로 만들었다.- Activation Functions

AND / OR Problem : Linearly Separable?

: 문제가 선형적으로 구분할 수 있을 때에는 해결할 수 있어서 큰 가능성을 보았지만,

XOR Problem

: XOR과 같은 비 선형적 문제는 해결할 수 없음.

: XOR는 수학적을오 풀수없다라고 정의하고 MLP를 통해 해결할 수 있다고 주장. 하지만, 이때는 MLP를 학습시킬 수 없다고 주장하여 찬물을 끼얻음.(50년대)

: 그러나, Backpropagation (1974,1982 Paul Werbos 이때는 각광받지 못했지만, 1986 Hinton 다시 발표함으로써 주목받음) 이 개발되어 해결할 수 있게됨.

: Convolutional Neural Networks - Hubel&Wiesel(1959) 교수가 고양이가 그림을 볼 때 뇌가 부분적으로 작동한다는 것에 착안하여 그림을 쪼개어 점점 합쳐가는 식의 기법이 나옴.

: 그러나, Backpropagation 이 10개 이상의 MLP에서는 학습이 잘 안됨에 따라 문제점이 발생

: 또, SVM이나 RandomForest 와 같은  머신러닝 알고리즘이 다양하게 나옴에 따라 MLP는 찬바람을 맞게됨 

Back-propagation 과 2006/2007 '딥'의 출현

CIFAR

: 돈이 안되더라도 딥러닝에 대해 연구하라고 밀어준 단체

Breakthrough 

: 초기값을 잘 주면 MLP도 좋은 성능을 낼 수 있다.

: 이를 딥러닝으로 이름을 바꾸자

: 이 후 그림을 맞추는 문제에 대해 사람보다 더 낮은 오류를 보이게 되었다.

: 엄청난 발전을 이루게 되었다.

왜 지금 공부해야 하는가?

: 학생/연구자

: 지금도 세계적 전문가가 되기에 늦지 않았다.

: 수학적으로 너무 복잡하지는 않다.

: 실용자

: 충분히 실생활에 쓸 수 있다.

: 텐서플로우 같은 툴들이 많다.

: 파이썬같은 많은 간단한 프로그래밍 언어로 가능하다.




아래 URL을 필기한 내용입니다.

https://www.youtube.com/watch?v=n7DNueHGkqE&feature=youtu.be

https://www.youtube.com/watch?v=AByVbUX1PUI

1. 머신러닝

: 일종의 소프트웨어이자 프로그램이다.

: 스팸필터나 자동 주행 같이 너무 많은 규칙들이 필요한 프로그램들이 있다.

: 직접 프로그래밍하지말고, 직접 학습하여 작동하는 프로그램을 제안.

2. Supervised/Unsupervised Learning

: Supervised Learning

: 미리 정해진 데이터를 가지고 학습하는 것

: 미리 결과들을 알려줌

: 일반적인 문제를 다루기때문에 여기서는 Supervised Learning을 주로 다룬다

: 이미지 레이블링, 스팸메일...

: Training data set을 통해 학습 (특징과 레이블을 매칭해둔 데이터)

: 종류

: Regression - 점수를 예측하는 것

: Binary Classification - 두개중 하나로 분류하는 것

: Multi-Lable Classification - 여러 선택지 중 하나로 분류하는 것

: Unsupervised Learning : un-labled data

: 레이블이 없이 Grouping을 통해 해결


아래 URL의 필기 내용입니다.

https://www.youtube.com/watch?v=qPMeuL2LIqY

1. 인공지능

* 지능

: 본능적이나 자동적으로 행동하는 대신에, 생각하고 이해하며 행동하는 능력

* 인공지능 (Artificial Intelligence)

: 인공적으로 만든 지능

: 튜링테스트

: 지능의 조작적 정의

- 조작적 정의 : 측정할 수 있는 조건으로 어떤 속성을 기술

: Alan Maithison Turing

: 학자마다 다른 정의가 있음.

* 강한 인공지능

: 사람과 같은 지능

: 마음을 가지고 사람처럼 느끼면서 지능적으로 행동하는 기계

: 추론, 문제해결, 판단, 계획, 의사소통, 자아, 의식, 감정, 지혜, 양심 등등..

: 튜링테스트

* 약한 인공지능

: 특정 문제를 해결하는 지능적 행동

: 사람의 지능적 행동을 흉내 낼 수 있는 수준

: 대부분의 인공지는 접근 방향

: 중국인 방 사고 실험

: 중국어로 된 질문지에 일정 메뉴얼에 따라 답변하는 것

: 사람이 하는 것처럼 흉내내는 것

2. 인공지능의 역사

1960년대 이전

: 애니악 개발, 매우 제한된 성공

: LISP 언어 개발

: Advice Taker : 공리 기반 지식 표현 및 추론

: Perceptron - 신경망 모델

: 수단-목표 분석 기법 

: 범용 문제해결을 목표로한 GPS 개발

: 현재 상태와 목표 상태의 차이를 계산하여 차이를 줄일 수 있는 조작자를 선택 적용하는 과정을 반복한다.

: 차이를 제거하는 과정임.

: 계획수립

1970년대에서 1980년대 초반

: 일반적인 방법 보다는 특정 문제 영역에 효과적인 방법을 찾는 연구

: 전문가 시스템

: 특정 영역 문제에 대해서는 전문가 수준으로 해답을 제공

: 상업적 성공 사례

: 전문가 시스템 개발도구 개발(추후 JESS 소개할 것임)

: Prolog 개발

초창기 전문가 시스템

: MYCIN - 전염성 혈액 질환 진단

: PROSPECTOR - 광물탐사 데이터 분석

: DENDRAL

1980년대 중반에서 1990년대

: 신경망 모델 발전

: 다중 퍼셉트론(MLP) : 신경망의 르네상스 - 2000년대 중반들어와서 딥러닝의 모습으로 다시 활성화됨

: 오차 역전파 알고리즘

: 퍼지이론

: 진화연산 : 유전자 알고리즘, 진화 프로그래밍

: 확률적 그래프 모델

: 베이지안 네트워크

: 마르코프 랜덤 필드

: 서포트 벡터 머신(SVM)

2000년대 이후

: 에이전트

: 시멘틱 웹 : 웹페이지를 보고 컴퓨터가 인식할 수 있도록 하는 것

: 기계학습

: 데이터 마이닝

: 심층학습 - 딥러닝 

: 상업적 성공사례 다수 출현

: 애플의 시리, 구글의 Now, MS Cortana, 자율주행 등등..

튜링 테스트 최초 통과 프로그램

: Eugene Goostman (2014.06)

인공지능 바둑 프로그램 알파고

: 구글 DeepMind 개발

: 기계학습과 병렬처리로 구현

3. 인공지능의 요소기술

탐색

: 문제의 답이 될 수 있는 것들의 집합을 공간으로 간주하고 문제에 대한 최적의 해를 찾기위해 공간을 체계적으로 찾아보는 것

: 무정보 탐색

: 너비우선 탐색, 깊이우선 탐색 등등..

: 휴리스틱 탐색

: A 알고리즘

: 게임트리 탐색

: 몬테카를로 탐색이 알파고가 사용했던 것



기계학습

: 지도학습

: 비지도학습

: 군집화

: 강화학습

: 기대보상이 최대가 되는 정책을 찾음



<KOCW 강의를 필기한 것입니다.>

URL : http://www.kocw.net/home/search/kemView.do?kemId=1170523

강의자료

1.pdf


http://changpd.blogspot.kr/2013/04/linux-nohup-xxxsh.html

'프로그래밍 > Linux' 카테고리의 다른 글

소프트웨어 관리  (0) 2018.05.10

http://sys145.tistory.com/4

+ Recent posts