레플리
글 수 220


고등학교에서 논문을 작성하고 있는데, 처음 인공지능으로 해결할 목표를 "성별, 나이등의 사람별 속성들을 고려해서 어느 특정 분포를 만족하도록 자리를 배치하기"로 정했습니다. 분포라고 하면, 나이가 골고루 분포되도록 또는 키를 고려한다면 뒤쪽에는 키큰사람이 앉도록 하는 등 입니다. 일단 목표를 잡아두고 신경망을 공부하기 시작하고, 일반적인 Feedforward 네트워크와 역전파 까지 배웠습니다. 그러고 나니, 일반적인 네트워크로는 이 문제를 해결할 수 없을 것 같다고 생각했습니다. 그래서 순환 신경망을 공부하고 있는데 이렇게 하면 해결 가능 할까요?

 

일단, 입력 시퀸스를 다음과 같이 정합니다.

 

사람마다의 정보를 담은 백터를 다음과 같이 정합니다.

v = (성별, 나이)

이때, 성별은 0은 남자, 1은 여자 로 정하고 나이는 최대 나이 범위를 30으로 잡고 이를 0과 1 범위로 표현합니다. 즉, 0.5는 15살을 의미합니다.

 

출력 시퀸스는 다음과 같습니다.

 

out = (0, 0, 0, 0, ..., j, 0, 0, ..., k, 0, 0, ..., 0)

예를 들어, j행, k열의 크기의 자리가 있으면 out 백터의 크기는 j + k가 되며 두개의 one-hot 백터를 붙여놓은 형태가 될것입니다.

 

지금까지 배운 내용으로만 판단하면, 첫번째 입력으로 인해 자리가 하나 배정되면 은닉층의 상태값이 이후 시간에 따라 전달 앞에서의 판단을 바탕으로 충분히 자리가 겹치지 않도록, 분포를 고려해서 앉을 수 있을것 같습니다.

 

그러나, 한 입력 시퀸스에 대해 나올 수 있는 유효한 자리 배치가 굉장히 많습니다. 그래서 비용함수를(Loss함수? Cost 함수?) 분포가 잘 되면 될수록 0에 가까워지는 함수를 선택하면 어떨까 생각했는데 이는 미분 자체가 매우 힘들것 같습니다.

 

아직까지 구체적이지 못하고 추상적으로만 구현 방법을 위와같이 생각중에 있습니다. 충고나 조언 부탁드립니다. 아니면 읽어볼만한 글이라던가 책이라도 감사합니다! (이제까지 약 한달 반 동안 혼자서 인터넷으로만 공부하다보니 주변에 물어볼 사람도 없고해서... 이렇게 질문 글 올려봅니다.)

엮인글 :

깊은바다

2017.06.08 03:06:46
*.68.247.188

추천
1
비추천
0

안녕하세요. 고등학교 때 논문을 쓴다고 하니 놀랍네요~

 

제가 볼 때는 순환신경망도 어울리지 않는 방법인 것 같습니다. 만약 입력이 100개이면 100만큼 이전 입력의 시퀀스를 고려해야 하는데 현재 RNN은 그렇게 긴 순서를 학습하기 힘듭니다. 이런 경우 입력에 현재 자리배치 정보도 같이 넣어서 피드포워드 신경망을 사용하는게 더 좋을 것 같습니다.

 

그런데 피드포워드 신경망을 사용하려면 입력과 출력의 데이터셋이 있고 이를 학습시켜야 합니다. 그러기 위해서는 성별, 나이, 자리배치의 입력으로 자리의 위치를 나타내는 출력의 집합을 우선 만들어야 합니다. 그런데 말씀하셨다시피 같은 입력에 대해서 나올 수 있는 출력이 너무 많습니다. 예를 들어, 자리가 모두 비워져 있는 상태라면 어느 곳이라도 앉을 수 있으니까요.

 

제가 생각할때는 이런 문제는 신경망보다는 K-means 같은 클러스터링 같은 방법이 더 어울리는 것 같은데요. 성별, 나이, 키 같은 피처들로 구성된 데이터를 비슷한 클래스로 분류하고 그 다음 같은 클래스에 속하는 사람들을 근처에 앉게 별도로 프로그램을 작성하는게 어떨까요.

 

클러스터링은 비지도학습이라 결과값이 있는 레이블된 학습 데이터가 필요없다는 장점이 있습니다. 신경망을 써서 비슷한 클래스를 분류할 수도 있는데 이럴 경우 <(성별, 나이, 키) -> (클래스)>로 된 데이터가 있어야 합니다. 이런 데이터를 구할 수 없다면 직접 만들어야 하는데 그건 좀 비효율적인 것 같아요.

 

저도 많이 아는게 없어서 도움이 되었는지 모르겠네요^^;

RedLaboratory

2017.06.09 23:25:39
*.7.14.115

일단은 논문을 마무리 하기 위해서 자리배치가 아닌 쉬운 문제로 마감하려고 합니다. 하지만 이전부터 배우고 싶었던 분야라 논문을 마감하고 나서도 계속해서 배워보고 싶네요!

RNN이 별로 라면 LSTM은 괜찮을까요? 장기기억이 가능하니 자리 배치도 가능치 않을까요?

깊은바다

2017.06.20 05:30:41
*.68.247.188

답변이 늦어 죄송합니다. 지금 댓글을 봤네요^^;

요즘은 보통 RNN에 LSTM을 포함해서 사용하는데 역시 이 문제에서는 적합하지 않을 것 같아요. 지금처럼 인공지능에 꾸준히 관심을 갖고 있으면 앞으로도 잘 해내실 거라고 믿습니다 ㅎㅎ

List of Articles
제목 글쓴이 날짜 조회 수
카톡 대화를 학습하는 AI 아바타 챗봇 - 레플리 file 깊은바다 2024-01-17 306
안녕하세요! [1] eoofje2 2019-08-23 137
간단한 덧셈을 학습 시키고 싶습니다. [3] 거북이 2019-08-18 1884
챗봇 개발 관련 질문드립니다. [2] handle 2019-08-16 192
평일반은 없나요? [1] 뱅감이아빠 2019-08-15 620
안녕하세요 오늘 가입했습니다. [1] 복복 2019-08-06 119
안녕하세요! 가입인사 드립니다. [1] EdenGloria 2019-07-22 102
안녕하세요. 가입합니다. [1] 심봉사 2019-07-20 75
안녕하세요 시각예술계열 전공자가 장문으로 질문 드릴게 있어 여기까지 왔습니다. [3] 재앤더플루이드 2019-07-14 171
방향을 잡지못해 질문 드립니다. [3] 몽이삼촌 2019-07-10 286
인공지능 개발자 분들의 따끔한 조언 부탁드립니다. [1] ai꿈나무 2019-07-09 284
안녕하세요! 컨택을 하고 싶어서 게시글을 올려봅니다. 박서희 2019-06-06 234
딥러닝 관련질문드립니다!! [1] 코넬 2019-06-01 197
안녕하세요, 카카오 오픈빌더 응답관련 질문입니다. [2] 정진태 2019-05-27 192
[질문] Java, JavaScript 개발 툴과 AI 라이브러리 결정에 대한 질문 [1] 율려 2019-05-23 237
카카오톡 오픈빌더 스킬부분 질문입니다. [4] 정진태 2019-05-08 1342