목록코딩 (60)
영넌 개발로그
https://youtu.be/2gSW9Z_3SM4 구현영상 . . . 구현된 기능 1. start 버튼을 누르면 랜덤으로 지뢰 배치 2. 마우스 좌클릭시 지뢰가 있는 테두리까지 열림 (숫자를 표시할 수 있는 부분까지) 3. 노란 박스 위에서 마우스 우클릭시 지뢰가 있는 곳을 표시할 수 있음 -> 깃발 표시 4. 깃발 표시 위에서 마우스 우클릭시 모르는 부분을 표시할 수 있음 -> 물음표 표시 5. 숫자 표시 위에서 마우스 좌, 우 동시 클릭시 - 지뢰가 있으면 지뢰 위치가 깜빡거림 - 지뢰가 없으면 칸이 열림 6. 지뢰를 전부 찾으면 win, 지뢰를 클릭하면 lose 7. restart 버튼을 누르면 모든 칸 초기화 해당 링크에는 최종 실행 프로그램 동작 영상이 담겨있으며, 재생목록에 각 기능 구현 방..
1. 행렬곱 신경망에서 신호를 전달하는 연산은 행렬곱을 통해 그 크기에 상관없이 간결하게 표현이 가능하다. 또한 많은 컴퓨터 프로그래밍 언어는 행렬을 잘 인식하고 행렬 연산을 빠르고 효율적으로 처리 가능하다. 다음 층으로 넘어갈 때 입력의 합 x = input1 * W1 + input2 * W2 + input3 * W3 이다. 이를 행렬 식으로 나타내 보면 가중치 행렬 * input 행렬을 곱하는 것으로 간단하게 표현이 가능하다. 아래의 수식을 살펴보면 이해가 될 것이다. 위 수식에서 첫번째 행은 다음 계층 첫번째 노드의 활성화 함수에 입력 값으로 전달되고, 두번째 행은 다음 계층 두번째 노드의 활성화 함수에 입력 값으로 전달된다. 2. 역전파 최종적인 행렬곱으로 표현된 역전파 수식을 살펴보자 다중 계층..
다층 신경망의 구조 입력층, 출력층, 은닉층이 있다. 각 층에는 각각 자신만의 특정 함수가 있다. 입력층은 계산을 위한 뉴런은 거의 들어있지 않으며, 출력층은 은닉층에서의 출력 신호이다. 즉, 자극 패턴을 받아 들이고 전체 신경망의 출력 패턴을 정한다. 중요한건 은닉층인데, 은닉층에서는 입력의 특성을 파악해 뉴런의 가중치로 나타낸다. 가중치는 입력 패턴에 숨겨져 있는 특성을 의미한다. 다층 신경망 학습 다층 신경망 학습은 퍼셉트론과 유사하게 진행된다. 신경망은 출력 패턴을 계산하고 오차가 있다면(=실제와 목표 출력 간에 차이가 존재), 이 오차를 줄이도록 가중치를 조절한다. 다층 신경망에서는 가중치가 여러 개인데, 각각의 가중치는 두 개 이상의 출력에 영향을 미친다. 모든 데이터는 행렬로 변환하여 계산한..
퍼셉트론이란 ? 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 쉽게 말하면 입출력을 갖춘 알고리즘이며 입력을 주면 정해진 규칙에 따른 값을 출력하는 것이다. 다시 말하면, 입력 값에 대해 출력 값이 어떻게 나올지 예측하는 기계이다. 입력->연산->출력 시스템이다. 이렇게 어떠한 것의 동작 원리를 정확히 파악할 수 없을 때 취할 수 있는 방식 중 하나는 우리가 조정할 수 있는 매개변수 값을 포함하는 모델을 만드는 것이다. 가중치와 편향을 매개변수로 설정한다. 매개변수를 포함하는 선형함수 모델을 만들어보자. 이후, 예측 값과 실제 값을 비교해 오차를 도출하고 이를 기준으로 조정한다. 퍼셉트론은 사람 뇌의 단일 뉴런이 작동하는 방법을 흉내내기 위해 환원 접근법 (reductionist app..
기계 학습이란 ? 컴퓨터가 경험, 유추를 통해 학습할 수 있게 하는 적응 매커니즘이다. 기계의 학습 능력은 시간이 흐르면서 지능형 시스템의 성능을 개선한다. 인공 신경망(artificial neural network)으로 만들으며 이는 유전 알고리즘(genetic algorithm)에 기반한다. 인공 신경망이란? 인간의 뇌를 기반으로 한 추론 모델이다. 아래 그림은 생물학적인 신경망이다. 뉴런(neuron)이라고 불리는 기본적인 정보처리 단위이다. 신경 세포라고도 불린다.신경세포는 이온 통로(Na,K)를 발현하여 다른 세포와는 달리 전기적인 방법으로 신호를 전달할 수 있다. 또한 인접한 다른 신경세포와는 시냅스라는 구조를 통해 화학적 신호를 주고 받음으로써 다양한 정보를 받아들이고, 저장하는 기능을 한다..
인공지능 (Artificial Intelligence)? 존 매카시(John McCarthy)는 인공지능이라는 용어를 만들고 "intelligent machines을 만드는 과학과 공학"이라 정의했다. 사람의 지능으로 할 수 있는 사고, 학습, 자기 개발 등 컴퓨터가 대체할 수 있도록 하는 방법을 연구하는 분야이다. 머신러닝 (Machine Learning)? 정의가 두가지 있다. 아서 사무엘(Arthur Lee Samuel), 1959년 : Field of study that gives computers the ability to learn without being explicitly programmed == A라는 정보를 입력할 때 동작이 X가 되는 조건 B를 찾도록 기계를 학습시킨다 (일반적인 프로..
container는 data를 저장하는 공간, iterator는 container 안에 있는 data를 순차적으로 모두 access할 수 있는 방법을 제공한다. 그럼 그 데이터를 읽어서 무엇을 할지에 대한 처리는?? 그런 것을 알고리즘(algorithm)이라고 한다. 이 또한 STL 라이브러리에서 제공한다. 여기서는 핵심적인 몇 가지만 다뤄보도록 하겠다. 아래 7개는 대부분의 컨테이너에 대해서 동작하며, 통일된 방법으로 사용할 수 있다. 1. find container 자체에서 find 메소드를 제공하는 컨테이너도 있기는 한데 그렇지 않은 것들도 있다. 내가 원하는 데이터가 어디있는지 찾기 위해 사용하는 알고리즘이다. 아주 똑같아야만 찾을 수 있다. 2. find_if find랑 비슷한데 내가 찾고자 하..
container map 은 hash table과 같은 일을 한다. hash table은 key와 value값을 가지고 있는 일방향 암호화 방식이다. 검색할 때 사용하는 것을 key라고 하고 진짜 값은 value에 저장되어 있는 자료구조이다. 맵에서는 순서가 중요하지 않다. 검색해서 key값을 이용해 바로 찾아갈 수 있기 때문이다. 맵에 값을 넣는 method는 insert를 사용한다. 반환되는 형식은 container set과 같이 pair로 받는다. 쌍으로 받으며 삽입에 성공하면 true 실패하면 false를 반환한다. 맵에서 값을 찾는 method는 find를 사용한다. 찾는 타겟의 위치를 iterator로 반환한다. map for #include #include #include using name..
container 중 set 이라는 것은 집합을 의미합니다. 값을 중복없이 저장하는 데에 자주 사용하고 집합 내에 유무를 체크하는데에 사용된다. 따라서 중복성 검사를할 때에 사용되는 자료구조 이기도하다. (check if element already exists) 예를 들어 문장 단위로 잘라서 set으로 만든 후, 그 문장이 다른 set에 나타나는지 안나타나는지에 사용하여 표절 검사를 할 수 있다. 집합 내에 유무를 체크하기 위해서는 method find를 사용한다. set은 증가하는 형태로 저장하는 특징이 있기 때문에 정렬된 형태로 뽑아낼 수 있다. 삽입할 때는 method insert를 사용한다. 반환할 때는 쌍으로 을 반환한다. bool 값은 중복성에 따라 true와 flase를 반환하고, iter..
STL (Standard template library) C++의프로그래밍 개발 효율성을 높여주는 라이브러리이다. C++ 국제 표준에서 제정만하고 구현은 개발자가 알아서 하는 것이다. data structure와 algorithm 등을 구현해둔 라이브러리이다. container에 데이터를 저장할 수 있는 공간이다. vector, array, deque(덱): double ended que, list 등이 있다. deque는 앞과 뒤 모두 in/out이 가능하다. 일반적인 큐처럼도 사용이 가능하다. vector와 array, deque는 모두 배열이어서 연속된 공간이 필요하다. 이런 연속되지 않은 공간을 사용하기 위해 C언어에서 SLL과 DLL을 사용했는데, STL 에서는 SLL은 forward list,..