인공지능

    [pytorch] torch.tensor.detach() 의 기능

    파이토치에서 Tensor 객체의 detach() 메소드는 현재 Tensor 객체와 동일한 데이터를 가지지만 연산 그래프(Computational Graph)에서 분리된 새로운 Tensor 객체를 생성합니다. 이 메소드는 일반적으로 Tensor 객체를 다른 Tensor 객체로 변환하고자 할 때 사용됩니다. 예를 들어, 주어진 Tensor 객체에 대한 연산의 결과로 생성된 새로운 Tensor 객체가 있을 때, 이 새로운 Tensor 객체를 사용하여 추가적인 계산을 수행하고자 할 때, 기존 Tensor 객체의 연산 그래프와의 의존성을 제거하여 메모리 사용량을 줄이고 계산 속도를 향상시키는 데 유용합니다. detach() 메소드는 requires_grad 속성을 False로 설정하여 기존 Tensor 객체와 다..

    [Tensorflow] AutoEncoder 오토인코더 구현하기

    본 포스팅은 Applied Deep Learning - Autoencoders 편을 참고하였습니다. 오토인코드는 입력과 출력이 동일한 피드포워드 신경망의 한 유형입니다. 입력을 의도적으로 낮은 차원의 '코드'로 압축, 이후에 이 압축된 '코드'라는 표현을 기반으로 출력을 재구성(reconstruct)합니다. 코드는 입력의 간결한 "요약" 또는 "압축"이며 '잠재 공간 포현 (latent space representation)'이라고도 합니다. 오토인코더의 구성요소 오토 인코더는 [ 인코더, 코드, 디코더 ] 총 3개의 요소로 구성되어 있습니다. 인코더는 입력을 압축하고, 압축된 입력은 코드가 됩니다. 디코더는 이 코드를 사용하여 입력을 재구성합니다. 아래는 오토인코더의 동작 예시입니다. MNIST의 데이..

    [확률적 시스템] 부분 관측 마르코프 결정 프로세스 (Partially Observable Markov Decision Process)

    본문을 읽기 전, 아래 변수를 기억하고 넘어가자. 또한 마르코프 결정 프로세스가 어떤건 지 아직 모르겠다면, 전 포스트의 내용이 도움이 될 것이다. \(s_t\): t시점에서의 상태 \(o_t\): t시점에서 \(s_t\)에만 의존하는 정보 (예를 들면 위치를 찾을 수 있는 센서 정보) \(a_t\): t시점에서의 행동 \(P(s_{t+1})\): t+1시점에서의 상태 확률 \(P(s_{t+1} | s_t, a_t)\): t 시점에서 상태 s와 행동 a가 진행되었을 때, \(s_{t+1}\)일 확률 \(P(s_{t+1} | s_{1:t}, a_{1:t})\): 1부터 t시점까지의 상태 s와 행동 a가 주어졌을 때, \(s_{t+1}\)일 확률 (즉 1부터 t까지 모든 시점을 고려하였을 때 상태가 \(s_..

    [강화학습] 조작적 조건화와 스키너 상자(Skinner Box)

    강화학습이란? 강화학습(Reinforce Learning) 구현에 앞서, 강화학습이란 무엇인지 짚고 넘어가야 할 필요가 있다고 생각합니다. 강화학습의 가장 큰 특징은 사람처럼 시행착오를 통해 학습해가는 점이라고 할 수 있습니다. 즉, 어떤 행동을 취해보고, 그 결과가 좋았는지 나빴는지 확인하고 그 행동을 평가하여 조금씩 스스로 방법을 개선해 나간다고 할 수 있죠. 이러한 성질때문에, 게임 분야에서 강화학습의 예시가 직관적으로 다가옵니다. 강화학습은 시행착오의 결과로 얻은 보상(reward)에 따라 행동을 형상하게 되는데, 이런 보상에 의한 행동 형성을 조작적 조건화(operant conditioning)이라고 합니다. 스키너 상자 (Skinner Box) 예시를 통해 강화학습의 원리를 조금 더 직관적으로..

    [python] 기본적인 탐색 알고리즘 2 - BFS

    기본적인 탐색 알고리즘 관련 내용은 이전 포스팅 참고 [python] 기본적인 탐색 알고리즘 1 - DFS 탐색 알고리즘에 대해 알아봅시다. 인공지능을 공부하면, 상당수의 개념이 상태공간에서 비롯됨을 알 수 있습니다. 이러한 상태공간을 탐색하는데에는 여러 방법이 있는데요. 그중에서도 아무 benban.tistory.com 이번 포스팅에선 너비우선탐색 Breath-First Search (BFS)에 대해 알아보는 시간을 갖겠습니다. BFS 원리 설명 위 그래프와 리스트는 BFS의 전형적인 문제해결 방법을 나타냅니다. DFS와 다른점이 있다면, 어떠한 노드를 탐색했을 때, 해당 노드의 자식 노드를 가장 우선적으로 탐색하는 방법이 아닌 오픈리스트 맨 마지막에 추가하여 가장 나중에 탐색하여 넓게 넓게 확인하며 ..

    [python] 기본적인 탐색 알고리즘 1 - DFS

    탐색 알고리즘에 대해 알아봅시다. 인공지능을 공부하면, 상당수의 개념이 상태공간에서 비롯됨을 알 수 있습니다. 이러한 상태공간을 탐색하는데에는 여러 방법이 있는데요. 그중에서도 아무런 기초 지식이 없을때 활용할 수 있는 탐색 방법중 하나인 망라적 탐색(Exhaustive Search)에 대해서 알아보도록 하겠습니다. 망라적 탐색을 수행하려면 몇 가지 기본적인 Rule을 숙지해야합니다. 이미 확인한 곳을 다시 확인해서는 안됨 (closed list로 관리) 아직 확인하지 않은 곳을 알고 있어야함 (open list로 관리) 효율적인 순서로 탐색해야함 -> 깊이우선탐색(DFS), 너비우선탐색(BFS) 활용 그 중에서도 이번에는 깊이 우선 탐색인 Depth-First Search (DFS)에 대해 알아보고, ..

    [인공지능] 프레임 문제 (Frame Issue)

    바로 예를 들어 인공지능이 갖고 있는 프레임 문제에 대해 설명드려보겠습니다. 인공지능에게 '햄버거집에서 햄버거를 사와라' 라고 요구했다고 생각해봅시다. 실제 이 일을 수행하는데, 햄버거를 사러 다녀오는 과정에서 무수하게 다양한 사건이 일어날 가능성이 있습니다. 대부분 목적과는 관계가 없는 문제겠죠. 하지만 인공지능은 일어날 수 있는 사건 주에서, 햄버거를 사는 일에 관계된 것만을 추출해내고, 그 외의 일은 당분간은 염두에 두면 안되겠죠. 만약 모든 사건을 고려한다면, 무한한 시간이 걸릴 것입니다. 이처럼 어떤 테두리(프레임)를 만들고, 그 테두리 안에서만 사고할 필요가 있는데 이것을 바로 프레임 문제라고 합니다. 미리 프레임을 여러 개 정해 두어, 상황에 따라 적절한 프레임을 선택해 사용하면 해결할 수 ..

    [인공지능] Strong AI vs Weak AI

    2010년도 후반에 이르러 인공지능의 쓰임새는 나날이 증가하고 있습니다. 컴퓨팅 파워, 센서, 사물의 데이터화 등을 통해 무수히 데이터가 쌓이기 시작하고, 이를 저장하고, 처리하고, 활용할 수 있는 솔루션이 인공지능 사용을 계속해서 촉진하고 있기 때문이죠. 인공지능은 흥망성쇠를 거듭하며 인공지능은 Strong AI와 Weak AI로 나뉘었습니다. Strong AI Strong AI는 구성론적인 접근으로 굉장히 연역적인 부분이 있습니다. 인간의 지능을 재현하려는 과정을 통해 인간을 이해하려고 하는 완벽주의적 AI입니다. 따라서 인지발달 로보틱스, 뇌신경 과학 등에서 추구하는 인공지능이기도 하죠. 하지만 인간의 뇌를, 뉴런을 표현하기에는 우리의 기술은 아직도 한없이 부족합니다. 수십억개에 달하는 뉴런과 그와..