Translate

2018년 11월 30일 금요일

노르웨이 광산에 취직한 볼보 자율 주행 트럭







(Volvo's self-driving trucks will be used to ferry limestone away from a mine in Norway(Credit: Volvo Trucks))


 자율 주행 트럭에 많은 관심을 쏟고 있는 볼보가 노르웨이의 광산에서 채굴한 광물을 실어 나르는 자율 주행 트럭을 선보였습니다. 시멘트 등의 원료로 사용되는 탄산칼슘을 채취하는 대형 노천 탄광에서 5km 떨어진 파쇄기까지 사람을 대신해 6대의 로봇 트럭을 Brønnøy Kalk AS에 판매한 것입니다. 


 공개한 영상에서 볼보 자율 주행 트럭은 큰 문제없이 파쇄기까지 채굴한 광물을 실어 날랐습니다. 이 5km 구간은 직선 구간만 있는 것은 아니지만, 채굴 트럭 이외의 차량은 거의 다닐 일이 없는 도로이기 때문에 자율 주행 트럭을 도입하는데 큰 문제가 없습니다. 이 정도는 현재의 자율 주행 기술로 충분히 운용이 가능합니다. 




(동영상) 


 볼보 자율 주행 트럭은 GPS와 Lidar를 이용해 주변 지형과 사물을 인지하며 사람의 감독하에 지루한 반복 운전을 쉬지 않고 계속할 수 있습니다. 현재의 기술 발전을 생각하면 가까운 미래에는 채굴에서 운송까지 거의 로봇과 자율 주행 트럭이 담당하는 광산도 가능할 것 같습니다. 과거에는 SF 영화나 만화의 소재 같은 일이 이제는 가까운 미래가 된 느낌입니다. 


 일자리 감소라는 문제도 있지만, 자율 주행은 피할 수 없는 미래가 될 것 같습니다. 특히 광산 같은 경우 인건비 절감이라는 큰 메리트를 포기하기 어려울 것입니다. 일자리와 신기술이 어떻게 갈등을 풀어 나갈 수 있을지가 관건이 될 것 같습니다. 


 참고 





나사의 상업 달 착륙선 파트너 공개



(Lunar lander concept by Astrobotic Technology of Pittsburgh(Credit: Astrobotic Technology of Pittsburgh))

(Lunar lander and launcher concept by Firefly Aerospace(Credit: Firefly Aerospace))

(Draper Laboratory's Artemis lunar lander(Credit: Draper Laboratory))

(Intuitive Machines of Houston lunar lander concept(Credit: Intuitive Machines of Houston))

(Masten Space Systems lunar lander concept(Credit: Masten Space Systems))

(Moon Express lunar lander concept(Credit: Moon Express))

(Orbit Beyond lunar lander concept(Credit: Orbit Beyond))


(Lockheed Martin lunar lander concept(Credit: Lockheed Martin))

(Deep Space Systems, rover concept(Credit: Deep Space Systems,))


 나사가 가까운 미래에 달에 착륙할 무인 탐사선의 상업 파트너 9개를 공개했습니다. Commercial Lunar Payload Services (CLPS)는 달 표면에 착륙선을 보내 여러 가지 과학 탐사를 할 수 있는 사업으로 최근 민간에 사업 참여를 독려하는 나사의 분위기에 맞춰 여러 제조사를 참여시켰습니다. 우선 선정된 9개 회사 (일부는 몇 개 회사가 모인 컨소시엄도 존재)는 앞으로 경쟁을 통해 최종 사업자로 선정될 것입니다. 이 사업은 10년에 걸쳐 총 26억 달러에 달하는 막대한 비용이 들어가 경쟁이 치열할 것으로 생각됩니다. 선정된 회사는 


Astrobotic Technology, Inc.
Deep Space Systems
Draper
Firefly Aerospace, Inc.
Intuitive Machines
Lockheed Martin Space
Masten Space Systems, Inc.
Moon Express
Orbit Beyond


 인데 록히드 마틴을 제외하면 생소한 회사들이 많아 독특한 느낌입니다. 물론 Artemis lunar lander처럼 제네럴 아토믹 같은 기존의 회사들이 몇 개 컨소시엄을 이룬 경우도 있습니다. 또 다른 독특한 부분은 로켓으로는 스페이스 X의 팔콘 계열 로켓을 생각한 회사들이 많다는 점입니다. 다만 스페이스 X 자체는 사업에 참여하지는 않은 것 같습니다. 


 상업 달 착륙선 프로젝트는 결국 나중에 진행할 유인 달 탐사 계획의 일부가 될 가능성이 큰데, 어떤 결과가 나올지 궁금합니다. 결과는 빠르면 2019년에 볼 수 있을 것이라고 하네요. 


 참고 



무게 400,000kg 짜리 버섯이 있다?



(The Armillaria gallica fungus, which is growing in a forest on Michigan's Upper Peninsula, is at least 2,500 years old, weighs 400,000 kilograms and covers about 70 hectares. Credit: James B. Anderson)


 버섯은 포자에서 발아한 후 하나의 버섯에서 끝나는 것이 아니라 균사체 (mycelium)를 사방으로 뻗어 새로운 영양분을 찾아 나서게 됩니다. 따라서 하나의 거대한 버섯 군락이 동일한 유전자를 지닌 경우도 드물지 않습니다. 이 균사체 네트워크는 중간에 끊길 수도 있지만, 때때로 하나로 연결되어 숲 전체를 덮는 경우도 있습니다. 이를 하나의 개체로 본다면 지구상에서 가장 큰 생물체는 나무가 아니라 버섯이라고 할 수 있습니다. 


 토론토 대학의 제임스 앤더슨 교수(James B. Anderson, a professor emeritus of biology at the University of Toronto Mississauga)는 1992년에 미시간 주에서 거대한 버섯 균사체 군락을 발견했습니다. 꿀버섯 (honey mushroom) 이라고 불리는 Armillaria gallica (국내에서는 천마뽕나무 버섯이라고 부르는 듯)의 거대한 군락은 적어도 무게 100,000kg, 면적 15헥타르에 달했으며 아마도 1500년 이상된 것으로 보였습니다. 하지만 거대한 크기 때문에 상세한 파악은 힘들었습니다. 


 앤더슨 교수의 연구팀은 2015-2017년에 걸쳐 이 거대 버섯에 대한 상세한 연구를 진행했습니다. 현장에서 확보한 245개의 샘플의 유전자 분석 및 3년에 걸친 현장 연구를 통해 연구팀은 이 버섯이 무게 400,000kg에 면적은 70헥타르 (70만㎡)에 달한다고 결론 내렸습니다. 연령대 역시 이전 추정보다 많은 2500년 이상으로 수정했습니다. 그야말로 역대 가장 거대한 단일 유전자 생물인 셈입니다. 


 이렇게 보면 뭔가 돌연변이가 일어난 버섯 같지만, 연구팀의 분석은 정 반대의 결과를 보여주고 있습니다. 사실 2500년 이상에 걸쳐 하나의 포자에서 이렇게 거대한 생물이 탄생했다면 그 사이 유전자 변이가 일어날 기회는 얼마든지 있었을 것입니다. 그러나 유전자 분석 결과는 오랜 시간과 여러 차례에 걸친 세포 분열에도 불구하고 이 버섯 군락이 거의 유전적으로 동일하며 그나마 변이가 있는 부분도 중요하지 않은 부분에서 주로 변이가 발생했습니다. 연구팀은 이 버섯이 돌연변이를 억제하는 어떤 기전을 가지고 있을 가능성이 크다고 보고 있습니다. 


 아무튼 지구상에는 별별 생물체가 다 있다는 것을 보여주는 좋은 사례 같습니다. 


 참고 


James B Anderson et al. Clonal evolution and genome stability in a 2,500-year-old fungal individual, bioRxiv, (2018). DOI: 10.1101/377234. https://www.biorxiv.org/content/biorxiv/early/2018/10/04/377234.full.pdf 

2018년 11월 29일 목요일

줄기 세포를 이용한 인공 추간판 - 허리 디스크 통증 사라질까?



(One of the goat-size eDAPS, prior to implantation(Credit: Penn Medicine))


 척추뼈 사이에서 충격을 흡수하고 체중을 지탱하면서도 유연하게 움직일 수 있게 도와주는 조직이 흔히 디스크라고 부르는 추간판 (intervertebral disc)입니다. 추간판 탈출증은 지속적인 압력과 손상, 그리고 노화에 의해 이런 추간판이 탈출해 주위의 신경과 조직을 누르고 통증과 신경학적 증상을 유발하는 것으로 흔히 허리 디스크라고 부릅니다. 


 추간판 탈출증은 죽는 병은 아니지만 그래도 삶의 질을 크게 떨어뜨릴 수 있습니다. 사실 저도 그런데 허리 아플 때는 추간판을 교체했으면 하는 생각을 하게 되는 건 저만의 생각이 아닐 것 같습니다. 문제는 추간판이 충격을 흡수하는 중심의 수핵과 질긴 섬유조직으로 형태를 유지하는 섬유륜으로 되어 있어 얇으면서도 기계적 성질이 뛰어나 이를 대체할 물질을 만들기 어렵다는 것입니다. 따라서 아예 줄기 세포를 이용해서 사람의 추간판을 만들어 이식하는 방법이 연구되고 있습니다. 


 펜실베니아 의대의 연구팀은 염소에 이식할 수 있는 줄기세포 기반 인공 추간판을 개발했습니다. 이전 동물 실험은 쥐를 대상으로 이뤄졌는데, disc-like angle ply structures 혹은 DAPS라고 알려진 인공 추간판은 5주 이상 잘 움직였습니다. 이후 연구팀은 endplate-modified DAPS (eDAPS)라는 개선된 기술을 동원해 20주 이상 움직이게 하는 데 성공했습니다. 


 하지만 쥐와 사람의 추간판은 받는 압력이 크게 다르기 때문에 적절한 동물 실험 모델이라고 볼 수는 없을 것입니다. 다음 단계로 연구팀은 eDAPS를 염소에 이식하기 위해 준비하고 있습니다. 이 인공 추간판은 중간엽 줄기세포 (mesenchymal stem cell)를 실제 추간판과 비슷한 형태의 3차원 구조물을 거푸집 삼아 배양한 것으로 실제 사람의 추간판과 유사한 성질을 지니고 있습니다. 


 연구팀은 염소가 쥐보다 사람에 가까운 척추 구조와 추간판을 가지고 있어 동물 실험 모델로 택했다고 설명했지만, 근본적으로 포유류에서 드문 수직 이족 보행을 하는 인간의 추간판 만큼 많은 압력과 충격을 받지는 않을 것입니다. 더구나 한 번 이식하면 오랜 세월 압력을 받아야 하는 만큼 실제로 사람에 이식할 만한 줄기 세포 기반 인공 추간판을 개발하는 것은 앞으로 많은 시간이 필요합니다. 하지만 언젠가는 성공해서 허리 통증으로 고통받는 환자들에게 희망이 되기를 기원합니다. 


 참고 





다른 개미의 머리를 모으는 별난 개미의 사연



(Florida's skull-collecting ant, Formica archboldi, next to trap-jaw ant body parts that are found throughout its underground nest. Credit: Adrian Smith)


 개미 가운데는 상상도 하기 힘든 독특한 생존 전략을 가진 종이 많지만, 플로리다주에 사는 Formica archboldi 만큼 이상한 곤충은 많지 않을 것입니다. 이 개미는 강력한 포식자인 집게 턱 개미 (Trap-jaw ant)를 먹으로 삼는데 놀랍게도 전리품처럼 이 개미의 머리를 잘라 개미굴을 장식합니다. 집게 턱 개미는 이름처럼 큰 턱을 지니고 있는데, 이 가운데서도 특이한 종류가 많습니다. 




 노스 캐롤라이나 주립대의 아드리안 스미스 (Adrian Smith a scientist at the North Carolina Museum of Natural Sciences and North Carolina State University)는 이 개미의 비밀을 풀기 위해 연구를 진행했습니다. 가장 놀라운 부분은 자신보다 큰 집게 턱 개미를 어떻게 사냥하는지 입니다. 거대한 턱을 지닌 집게 턱 개미는 다른 개미나 곤충을 잡아먹는 무서운 사냥꾼으로 쉽게 잡을 수 없는 먹이입니다. 이를 테면 사자를 사냥하는 호랑이나 마찬가지인 것입니다. 


 이 비밀을 밝히기 위한 고속 카메라와 개미에 대한 화학적 연구 결과는 놀라운 사실을 보여줬습니다. F. archboldi는 먹이인 집게 턱 개미와 비슷한 포름산이 포함된 독을 고속으로 분사해 집게 턱 개미를 마비시켰습니다. 동시에 이 개미는 집게 턱 개미와 비슷한 화학 성분을 몸에 둘러 천적이 아니라 동료인 것처럼 위장해 성공적으로 잠입해 사냥할 수 있었습니다. 아래 영상에서 확인할 수 있듯이 심지어 집게 턱 개미 군집 사이에서 사냥한 개미를 분해해서 가져옵니다. 




(동영상) 


 물론 그래도 왜 하필 머리를 저장하는지는 알 수 없지만 아무튼 이 개미는 덫개미의 몸을 조각 낸 후 개미굴로 가져와 식량으로 저장합니다. 뭔가 개미판 호러 무비 같은 설정인데 개미의 다양한 진화를 확인할 수 있는 사례 가운데 하나일 것입니다. 


 참고 


Adrian A. Smith, Prey specialization and chemical mimicry between Formica archboldi and Odontomachus ants, Insectes Sociaux (2018). DOI: 10.1007/s00040-018-0675-y 



티타늄 3D 프린터로 출력한 자동차 휠





(HRE3D+ wheel(Credit: HRE Wheels))


 캘리포니아에 있는 HRE Wheels라는 스타트업에서 티타늄 파우더를 이용한 금속 3D 프린터로 출력한 휠을 선보였습니다. 흥미롭게도 이 휠은 최근 제트 엔진에 금속 3D 프린터 출력 부품을 사용하고 있는 GE의 Additive's AddWorks가 같이 협업한 것이라고 합니다. 고온 고압 환경에서 높은 신뢰성을 확보해야 하는 제트 엔진에서도 3D 프린터 출력 부품이 쓰이는 만큼 자동차 휠은 당연히 문제 없이 사용이 가능하지만, 기존의 알루미늄 휠 보다 더 좋으면서 가격 경쟁력이 있을지가 관건인 것 같습니다. 


 HRE3D+라고 불리는 이 티타늄 휠은 내부에 복잡한 3차원 구조를 가지고 있는데, 레이저를 이용한 적층 방법이 아니라 전자 빔 (Electron Beam)을 이용해서 티타늄 파우더를 녹여서 만드는 점이 특징입니다. 전자빔을 이용해서 티타늄 파우더를 녹이고 남은 파우더는 다음 제조 부품을 위해 사용할 수 있습니다. 이는 기존의 제조 방식으로 만들기 힘든 복잡한 3차원 구조를 만드는데 유리할 뿐 아니라 원료를 효율적으로 사용할 수 있게 도와줍니다. 


 아무튼 그래도 비싼 금속을 사용하는 만큼 기존의 알루미늄 휠보다 비쌀 듯 한데, 제조 단가가 얼마나 나올지 궁금하네요. 하지만 현재의 기술 발전을 생각하면 자동차에 3D 프린팅 출력 부품이 널리 사용되는 미래가 그렇게 멀지는 않을 것 같습니다. 


 참고 


2018년 11월 28일 수요일

나사의 재활용 3D 프린터 Refabricator



(The "Refabricator" is a recycler and 3D printer in one unit about the size of a dorm room refrigerator. Pictured is the tech demonstration unit that will be tested at NASA's Marshall Space Flight Center in Huntsville, Alabama before a flight unit is launched to the space station in April 2018.   Credits: NASA/MSFC/Emmett Given)


 이전에 전해드린 것과 같이 나사는 우주에서 사용할 수 있는 3D 프린터에 많은 연구를 진행하고 있습니다. 유인 우주선이나 혹은 우주 기지에 물자를 공급하기 위해 그때마다 수송선을 보낼 수 없기 때문에 가능하면 현지에서 조달하는 것이 유리하기 때문입니다. 특히 장기간 유인 탐사가 될 화성 유인 탐사나 혹은 달 표면 유인 기지에서 매우 유용한 방법이 될 것입니다. 


 그런데 가능하다면 3D 프린터의 잉크 역시 재활용이 가능하다면 더 좋을 것입니다. 오랜 연구 끝에 나사는 마침내 올해 국제 유인 우주 정거장 (ISS)에 재활용 3D 프린터인 리패브리케이터 (Refabricator)를 발사합니다. 리패브리케이터의 외형은 최신 첨단 기기보다는 마치 오래된 실험기기 같은 형태이지만, 중요한 건 외형이 아니라 미세 중력 상태에서 장시간 사용해도 문제 없는 기기의 안전성일 것입니다. 



(동영상) 



 리패브리케이터의 핵심은 사실 3D 프린터가 아니라 플라스틱 소재를 재활용하는 기술입니다. 이 기술은 나사의 독자 개발이 아니라 시애틀에 위치한 Tethers Unlimited Inc의 것으로 이 회사는 2015년에 이 기술을 선보였으며 나사의 Small Business Innovation Research에서 75만 달러를 지원받아 리패브리케이터를 제작했습니다. 


 아무튼 제조사에 의하면 이 독특한 재활용 3D 프린터의 핵심은 플라스틱을 갈아서 재활용하는 것이 아니라는 점입니다. 어떻게 다시 초기 잉크 상태로 돌리는지는 설명하지 않았지만, 아무튼 흥미로운 부분입니다. 더 흥미로운 부분은 테더스사의 미래 계획입니다. 이 회사의 목표는 아예 3D 프린터를 우주로 보내 우주 기지나 정거장, 혹은 그냥 지구에서 발사하기에는 너무나 큰 탐사선을 우주에서 만드는 것입니다. 그렇게 하면 전자 부품처럼 출력이 어려운 부품을 제외하고 나머지를 우주에서 쉽게 만들 수 있어 우주 개발이 더 쉬워질 것입니다. 


 흥미로운 발상이긴 한데, 현실이 되기 위해서는 앞으로 많은 시간이 필요할 것 같습니다. 아무튼 리패브리케이터는 ISS에서 테스트를 통해 우주에서도 잘 작동한다는 것을 입증하면 더 연구를 진행해 미래 우주선에 탑재될 것입니다. 물론 지상에서도 쓰일 수 있겠죠. 결과가 기대됩니다. 


 참고 



과일 속 과당은 당뇨를 일으키지 않는다




 강한 단맛을 내는 단순한 당류인 과당(fructose) 포함한 식품 가운데 탄산음료 같은 가당음료를 자주 섭취하는 경우 당뇨 위험도가 높아진다는 리뷰 결과가 저널 BMJ에 발표됐습니다. 물론 새로운 연구 결과는 아니지만, 기존의 여러 연구 결과를 종합해 리뷰하는 것 역시 중요합니다. 중요한 사실은 인공적으로 고농도의 과당을 첨가한 가당음료 이외에 천연적으로 과당을 포함한 과일의 경우에는 위험도를 높이지 않았다는 것입니다.


 토론토에 있는 성미카엘 병원의 존 시벤파이퍼 박사 (Dr. John Sievenpiper, Clinical Nutrition and Risk Factor Modification Centre of St. Michael's Hospital in Toronto, Canada)를 비롯한 연구팀은 과당이 포함된 식품 섭취와 혈당과의 관계를 연구한 155개의 선행 연구를 리뷰했습니다. 이 연구는 12주까지 과당이 혈당, 당화혈색소, 인슐린 분비에 미치는 영향을 조사한 것입니다.



 연구 결과 추가적인 열량을 제공하지 않는 과일이나 과일 주스는  혈당에 미치는 영향이 거의 없었습니다. 반면 고열량 음료인 가당음료는 잘 알려진 것처럼 혈당을 빠르게 높이는 효과가 있습니다. 과일의 경우 섬유질 및 수분, 그리고 비타민과 무기질을 포함한 다양한 영양소가 같이 있고 무게 대비 저열량 식품이지만, 탄산음료는 약간의 식폼 첨가물과 물 그리고 고농도의 과당이 들어있어 전혀 다른 경우라고 하겠습니다. 과당 자체가 문제가 있는 게 아니라 섭취하는 식품의 종류와 방법에 문제라고 하겠습니다.


 새로운 내용은 아닐지 모르지만, 제 책인 과학으로 먹는 3대 영양소에서 설멸한 내용과 같은 리뷰 내용이라 소개해 봤습니다. 물론 기존의 연구 내용과 리뷰를 참조해서 만든 책이기 때문에 새로 나온 리뷰와도 내용이 겹치는 건 당연하다고 하겠습니다.




 

​ 참고



BMJ (2018). DOI: 10.1136/bmj.k4644 , http://www.bmj.com/content/363/bmj.k4644



https://medicalxpress.com/news/2018-11-sweetened-pose-greater-diabetes-sugary.html

태양계 이야기 720 - 화성의 위성 포보스의 미스터리 줄무늬


(Much of Phobos' surface is covered with strange linear grooves. New research bolsters that idea the boulders blasted free from Stickney crater (the large depression on the right) carved those iconic grooves. Credit: NASA/JPL-Caltech/University of Arizona)


 화성의 위성인 포보스(Phohos) 작은 크기 때문에 그렇게 눈에 띄는 위성은 아니지만, 그래도 표면에 다른 위성에서는 볼 수 없는 매우 흥미로운 지형을 지니고 있습니다. 포보스의 표면을 가로지르는 여러 개의 줄무늬 지형이 그것으로 그 정체에 대해서는 과학자들마다 의견이 크게 엇갈리고 있습니다. 1970년대 이 줄무늬 지형이 처음 발견되었을 때는 포보스가 균열을 일으킨 흔적이라는 주장도 있었습니다. 이 위성은 긴쪽 지름이 27km에 불과한 작은 위성이지만, 스티크니 (Stickney) 크레이터라는 지름 9km 의 크레이터가 존재합니다. 이 충돌로 포보스는 거의 파괴될 뻔 했던 것으로 보이며 주름은 그 흔적일지도 모릅니다. 


 하지만 이 설명에는 몇 가지 문제가 있습니다. 모든 주름이 크레이터에서 시작되는 것도 아니거니와 일부는 서로 지나간 흔적이 있어 동시에 형성된 것이 아니라는 추정이 가능합니다. 1970년대 말에 일부 과학자들은 충돌 그 자체가 아니라 충돌에서 나온 암석이 이 도랑 같은 주름 지형을 만들었다고 주장했지만, 이를 확인할 방법은 없었습니다. 


 브라운 대학의 행성 과학자인 켄 람슬리(Ken Ramsley, a planetary science researcher at Brown University)는 컴퓨터 모델을 통해서 이 가설을 검증했습니다. 구르는 바위 모델 "rolling boulder model" 이라고 불리는 이 가설은 포보스가 겪은 거대한 충돌과 낮은 중력에 근거를 두고 있습니다. 한 번 큰 암석이 구르기 시작하면 사실 중력이 낮기 때문에 이를 막기 어렵습니다. 한번 크게 충돌해서 암석이 튀어오르면 포보스의 약한 중력을 이기고 우주 공간으로 튀어 나갔다가 다시 지표에 충돌하는 일도 얼마든지 가능하기 때문입니다. 



(Researchers used computer models to trace the possible path of boulders ejected from Stickney crater on Mars' moon Phobos. The simulations showed that boulders could have carved the iconic grooves seen on Phobos' surface. Credit: Ken Ramsley / Brown University)



(Researchers used computer models to simulate the path of ejecta from Stickney crater on Mars' moon Phobos. The simulations show how boulders take a flying leap over one particular area of Phobos, explaining why it's devoid of grooves. Credit: Ken Ramsley / Brown University)


 연구팀은 컴퓨터 시뮬레이션을 통해서 구르는 바위 모델의 타당성을 검증했습니다. 연구 결과는 실제로 비슷한 형태의 지형이 생성될 수 있음을 보여줬습니다. 이 모델은 운석 충돌에 의한 균열설로는 설명하지 못했던 많은 것들을 설명할 수 있습니다.


 하지만 당연히 이것만으로 모든 설명이 충분하지는 않습니다. 결정적인 단서를 확인하기 위해서는 역시 포보스 표면에 착륙선을 내려보낼 필요가 있습니다. 실패한 탐사선인 포보스 그룬트 이후 언젠가 다시 탐사선을 보내 이를 확인할 수 있기를 희망합니다. 이 가설이 사실이라면 이 지형을 만든 암석 역시 확인할 수 있을 것이고 표면을 확인하면 마모된 흔적을 찾을 수 있을 것입니다. 


 참고 


Kenneth R. Ramsley et al, Origin of Phobos grooves: Testing the Stickney Crater ejecta model, Planetary and Space Science (2018). DOI: 10.1016/j.pss.2018.11.004 

2018년 11월 27일 화요일

R을 이용해 간단한 신경망 만들기 (1)


 요즘 핫한 분야라고 할 수 있는 인공 지능은 사실 데이터 분석과 불가분의 관계에 있습니다. 인공 지능과 통계적 방법을 이용한 예측 모델이 완전히 같은 것은 아니지만, 상당히 같은 내용을 공유하고 있으며 신경망을 비롯한 여러 가지 인공 지능 방법론에서 다양한 통계적 기법이 사용됩니다. 결국 상당수의 인공지능 개발은 데이터를 적절하게 분류하고 학습을 통해서 예측을 하는 것인데, 당연히 통계 분석에 사용되는 언어인 R 역시 이와 관련된 많은 패키지를 가지고 있습니다. 제가 인공 지능 관련 전문가는 아니지만, 여기에 대해서 간단한 포스팅은 해볼 수 있을 것 같습니다. 개인적으로는 신경망을 이용한 질병 예측 모델을 만들어 보면 어떨까 생각하고 있습니다. 


 R 자체에서 지원하는 인공지능 관련 패키지의 숫자는 매우 많고 사실 인공지능 방법론 자체가 매우 다양하지만, 여기서는 인공 신경망 (Neural Network)에 대해서만 이야기해 보겠습니다. 앞서 소개한 것처럼 요즘 인공지능 분야에서 인기가 좋은 텐서플로를 R과 함께 사용할수도 있으며 JAVA 기반인 H2O 역시 사용이 가능합니다. 


 하지만 우선은 가장 간단하게 사용할 수 있는 R 패키지에서 시작해 보겠습니다. neuralnet은 설정이 간단하고 파이선이나 자바 처럼 다른 언어와 패키지 설치없이 바로 시작할 수 있어 처음 진행하기에 적합할 것 같습니다. R 스튜디오에서 neuralnet을 설치한 후 간단한 예제를 실행하겠습니다. ?neuralnet을 통해서 뉴럴넷의 설명을 볼 수 있습니다. 


Training of neural networks

Description

neuralnet is used to train neural networks using backpropagation, resilient backpropagation (RPROP) with (Riedmiller, 1994) or without weight backtracking (Riedmiller and Braun, 1993) or the modified globally convergent version (GRPROP) by Anastasiadis et al. (2005). The function allows flexible settings through custom-choice of error and activation function. Furthermore the calculation of generalized weights (Intrator O. and Intrator N., 1993) is implemented.

Usage

neuralnet(formula, data, hidden = 1, threshold = 0.01,        
          stepmax = 1e+05, rep = 1, startweights = NULL, 
          learningrate.limit = NULL, 
          learningrate.factor = list(minus = 0.5, plus = 1.2), 
          learningrate=NULL, lifesign = "none", 
          lifesign.step = 1000, algorithm = "rprop+", 
          err.fct = "sse", act.fct = "logistic", 
          linear.output = TRUE, exclude = NULL, 
          constant.weights = NULL, likelihood = FALSE)




읽어볼만한 글 (한글 번역)





(neuralnet: Train and Test Neural Networks Using R)



앞서 살펴본 선형 회귀 모델을 통한 예측과 신경망을 통한 예측을 비교하기 위해 일단 간단한 선형 회귀 모형을 만들어 보겠습니다. y=3x+b의 모델을 선형 회귀 분선으로 파악하는 경우입니다. 


x<-seq span="">
set.seed(4567)
b<-rnorm span="">
y=3*x+b
y

model=lm(y~x)
summary(model)


> model=lm(y~x)
> summary(model)

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-9.6178 -2.9339 -0.3645  2.8352  7.7280 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 22.05412    1.20779   18.26   <2e-16 span="">
x            2.96272    0.04122   71.87   <2e-16 span="">
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.206 on 48 degrees of freedom
Multiple R-squared:  0.9908, Adjusted R-squared:  0.9906 
F-statistic:  5166 on 1 and 48 DF,  p-value: < 2.2e-16


 회귀 모델은 y=2.96x + 22.05로 나오는데 당연히 현실에서는 볼 수 없는 데이터이지만, 아무튼 상당히 정확하게 예측할 수 있습니다. 신경망으로 예측하면 어떤 결과가 나올까요. 이를 위해 y,x 값 및 모델에서 예측하는 값 (pred), 실제값 (y)와 예측값의 차이 (error)를 지닌 데이터 프레임을 만들어 보겠습니다. 

data1<-as .data.frame="" span="" x="">
data2<-as .data.frame="" span="" y="">
data3<-cbind data1="" data2="" span="">

data3$pred=2.96*data3$x+22
data3$error=data3$pred-data3$y
summary(data3)

> summary(data3)
       x               y               pred            error        
 Min.   : 1.00   Min.   : 19.32   Min.   : 24.96   Min.   :-7.8664  
 1st Qu.:13.25   1st Qu.: 62.55   1st Qu.: 61.22   1st Qu.:-3.0076  
 Median :25.50   Median :102.25   Median : 97.48   Median : 0.2288  
 Mean   :25.50   Mean   : 97.60   Mean   : 97.48   Mean   :-0.1235  
 3rd Qu.:37.75   3rd Qu.:132.80   3rd Qu.:133.74   3rd Qu.: 2.7574  
 Max.   :50.00   Max.   :173.64   Max.   :170.00   Max.   : 9.5120  






 이제 뉴럴넷을 이용해서 신경망으로 학습을 시켜서 예측한 값과 비교해 보겠습니다. 


fit<-neuralnet data="data3," hidden="c(3,3)," stepmax="1e6) </span" threshold="0.1" x="" y="">
pred<-compute fit="" span="" x="">

이 과정은 시간이 좀 걸릴 수 있습니다. hidden = c(3,3) 은 뉴런 3개씩을 배치한 매우 단순한 모델임을 의미합니다. 기본적으로 뉴런의 숫자와 층, 그리고 뉴런에서 다음으로 전파되는 역치 (threshold), stepmax 등이 가장 기본적인 파라미터이며 나머지는 위에서 보여준 기본 값으로 들어가게 됩니다. 아무튼 이렇게 예측한 값을 바로 확인해 보겠습니다. 


data4<-as .data.frame="" net.result="" pred="" span="">
data5<-cbind data3="" data4="" span="">


 이렇게 하면 신경망으로 예측한 값이 V1이라는 변수에 저장됩니다. 역시 이 값과 실제값의 차이를 비교해서 error2에 저장해 보겠습니다. 




 대충보니 신경망으로 예측한 값이 선형 회귀 모델로 예측한 값보다 실제값에 더 가까운 것 같지만, 일일이 판단이 어려울 수 있습니다. 에러값이 작을 수록 예측을 잘한 경우로 생각하고 서로 비교를 해보겠습니다. 에러의 절대값이 적은편이 더 우수한 방법이겠죠. 회귀모델이 차이가 더 크면 1, 작으면 0으로 표시해 보겠습니다. 


data5$pred3=ifelse(abs(data5$error)>abs(data5$error2),1,0)
table(data5$pred3)

> table(data5$pred3)

 0  1 
25 25 


 의외로 결과는 반반입니다. 값을 조금 바꾸면 어떨까요? 


fit<-neuralnet data="data3," hidden="c(3,3)," stepmax="1e7) </span" threshold="0.06" x="" y="">
pred<-compute fit="" span="" x="">

data4<-as .data.frame="" net.result="" pred="" span="">
data5<-cbind data3="" data4="" span="">

data5$error2=data5$V1-data5$y
summary(data5)

data5$pred3=ifelse(abs(data5$error)>abs(data5$error2),1,0)
table(data5$pred3)

> table(data5$pred3)

 0  1 
20 30 


 이제는 신경망이 더 유리해졌습니다. 신경망은 여러 가지 파라미터를 조절해서 다른 결과를 얻을 수 있지만, 종종 결과를 내놓지 못하거나 혹은 결과값이 이상하게 수렴하는 경우가 나올 수 있습니다. stepmax을 조정해주지 않으면 에러가 나는 경우도 드물지 않습니다. stepmax는 신경망에서 훈련 시킬 최대 단계를 지정해주는 것으로(the maximum steps for the training of the neural network.) 너무 낮으면 다음의 에러가 생성됩니다. 


Warning message:
algorithm did not converge in 1 of 1 repetition(s) within the stepmax 


 이런 메세지가 나오면 stepmax 값을 늘려야 합니다. 해보면 의외로 원하는 결과를 얻기 어렵다는 사실을 알 수 있습니다. 아무튼 비교적 간단하게 시작할 수 있는 신경망인데, 사실 많은 것이 누락된 설명입니다. 물론 예제 역시 현실에서 보기 어려운 것이죠. 뉴럴넷을 이용한 신경망에 대해서 다음에 좀 더 자세히 이야기 해보겠습니다.